文档章节

Java并发理论简介

m
 modprobe
发布于 2016/11/08 09:57
字数 673
阅读 10
收藏 0

这些文字来自于Java程序员修炼之道,记录一下

 

一、 java线程模型

Java线程模型建立在两个基本概念之上

  • 共享的,默认可见的可变状态
  • 抢占式线程调度

我们从侧面思考一下这两个概念

  • 所有线程可以很容易地功效统一进程中的对象
  • 能够引用这些对象的任何线程都可以修改这些对象
  • 线程调度程序差不多任何时候都能在核心上调入或调出线程
  • 必须能调出运行时的方法,否则无限循环方法会一直占用CPU
  • 为了保护脆弱的数据,对象可以被锁住

二、设计理念

  • 安全性(并发类型安全性)
  • 活跃性
  • 性能
  • 重用性

  1、安全性与并发类型安全性

   安全性是指不管同时发生多少操作都能确保对象保持自相一致。如果一个对象系统具备这一特性,那它就是并发类型安全的。

  保证安全:

    保证安全的策略之一就是处于非一致状态时绝不能从非私有方法中返回,也绝不能调用任何非私有方法,而且也绝不能调用其他任何对象中的方法。如果把这个策略跟某种对非一致对象的保护方法(比如同步锁或临界区)结合起来,就可以保证系统是安全的(不大理解)

  2、活跃度

  在一个活跃的系统中,所有做出尝试的活动最终或者取得进展,或者失败

 

三、原则互相冲突

  设计原则经常相互对立

  • 安全性与活跃性相互对立---安全性确保坏事不会发生,活跃度要求见到进展
  • 可重用性的系统倾向于对外开放其内核,可这会引发安全问题
  • 一旦安全但编写方式幼稚的系统性能通常都不会太好,因为里面会用大量的锁来保证安全性
 
    最终应该尽量让代码达到一种平衡状态
  • 尽可能限制子系统之间的通信。隐藏数据对安全性非常有帮助
  • 尽可能保证子系统内部结构的确定性。比如说,即便子系统会以并发的、非确定性的方式进行交互,子系统内部的设计也应该参照线程和对象的静态知识
  • 采用客户端应用必须遵守的策略方针
  • 在文档中记录所要求的行为
 

本文转载自:http://www.cnblogs.com/modprobe/p/4876942.html

共有 人打赏支持
m
粉丝 1
博文 35
码字总数 0
作品 0
私信 提问
Java ThreadLocal 类的知识点解读

说起 Java 中的 ThreadLocal 类,可能很多安卓开发人员并不是很熟悉,毕竟很少有使用到的地方。但是如果你仔细分析过 Handler 源码的话,就一定见过这个类的出现。而 Handler 机制又是安卓知...

亦枫
10/29
0
0
OSC 第 101 期高手问答 —— Java 高并发程序设计

OSCHINA 本期高手问答(12月02日- 12月08日)我们请来了《实战Java高并发程序设计》的作者 @葛一鸣 为大家解答关于 Java 的并行程序设计基础、思路、方法和实战 方面的问题。如: 现在的服务...

叶秀兰
2015/12/01
12.9K
84
Thread(threadlocal)

1、简介 JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一...

开源中国首席碉堡了
11/28
0
0
ArchCon2017中国架构师大会-系统架构的迭代与创新

由上海最大的高端技术社群TopGeek和汇智Tek联合主办的中国架构师大会(ArchCon2017)将于2017年5月21日在上海举行。 本届大会主题为: “系统架构的迭代与创新”。随着云计算、分布式计算等技...

TopGeek
2017/05/03
4
0
Java 书籍 Top 10

陈皓 http:// blog.csdn.net/haoel 下面是Java Inside上推荐的十本Java书籍(文章来源),我把中文版的也列了出来。 1)Java Language Specification, Third Edition (by James Gosling) 本书...

JavaGG
2009/09/21
12.5K
20

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq学习

使用docker安装rabbit docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management--hostname:指定容器主机名称--name:指定容器名称-p:将mq端口号映射到本地...

元谷
22分钟前
1
0
想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜

本文由云+社区发表 前言 业务已基于Redis实现了一个高可用的排行榜服务,长期以来相安无事。有一天,产品说:我要一个按周排名的排行榜,以反映本周内用户的活跃情况。于是周榜(按周重置更新...

腾讯云加社区
24分钟前
2
0
函数计算性能福利篇(二) —— 业务冷启动优化

继前一篇《函数计算性能福利篇——系统冷启动优化》,我们再来看看近期函数计算推出的 Initializer 功能之后,带来的一波高能性能优化成果。 背景 函数计算是一个事件驱动的全托管 serverle...

阿里云官方博客
29分钟前
1
0
开源版本说明

1527
31分钟前
2
0
Mysql经验-------持续更新

单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

DoLo-lty
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部