并发编程
鹏哥哥啊Aaaa
这个作者很懒,什么都没留下…
展开
-
4.基础构建模块
本章介绍一些有用的并发构建模块,以及这些模块在构建并发应用程序时的一些常用模式。1.同步容器类早期同步容器:Vector和Hashtable。他们实现线程安全的方式是:将它们的状态封装起来,并对每个公有方法进行同步,使得每次只有一个线程能访问容器状态。(1)同步容器的问题/** * Vector存在的问题 */public class VectorQuestion { public static Object getLast(Vector list){ .原创 2020-09-07 11:34:30 · 136 阅读 · 0 评论 -
3.对象的组合
1.设计线程安全的类我们通过封装技术,可以在不对整个程序进行分析的情况下判断一个类是否线程安全。在设计线程安全类的过程中,需要包含以下三个基本要素:**找出构成对象状态的所有变量**找出约束状态变量的不变形条件**建立对象状态的并发访问管理策略同步策略定义了如何在不违背对象不变条件或后验条件的情况下对其状态的访问操作进行协同。(1)收集同步需求要确保类的安全性,就要确保它的不变性条件不会再并发访问的情况下被破坏,这需要对其状态进行推断。同样,在操作中还会包含...原创 2020-09-03 17:40:46 · 294 阅读 · 0 评论 -
2.对象的共享
上一章我们知道,同步代码块和同步方法可以确保以原子的方式执行操作,但是,synchronized除了这个功能外,还有一个重要的功能:内存可见性。(当一个线程修改状态后,其他线程能够看到状态的变化)1.可见性单线程,写入一个数据再读出来,值不会变。多线程中,如果没有同步机制,读的线程不一定能看到其他线程写入的值。而且就算看到了,可能顺序跟真实的顺序不一致。这种现象叫做“重排序”。在没有同步的情况下,编译器、处理器以及运行时等都可能对操作的执行顺序进行一些意想不到的调整。在缺乏足够同步的多线程.原创 2020-09-02 15:41:48 · 198 阅读 · 0 评论 -
1.线程安全性
1.线程安全性的基本概念(1)要编写线程安全的代码,核心是要对状态访问操作进行管理,特别是共享的和可变的状态的访问。共享:可以由多个线程同时访问可变:变量的值在其生命周期内可以发生变化(2)java中主要同步机制有:关键字synchronized,volatile类型的变量,显式锁,原子变量。(3)如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序会报错,有三种方法修复:*1、不在线程之间共享该状态变量*2、将状态变量修改为不可变的变量*3、在访..原创 2020-09-01 13:51:29 · 150 阅读 · 0 评论