并发编程实战
文章平均质量分 82
Happy_tt
不忘初心,不要着急,总会得到答案!
展开
-
对象的组合
我们并不希望对每一次内存访问都要进行分析来确保程序是线程安全的,而是希望将一些现有的线程安全组件组合为更大规模的组件或者程序。 一、设计线程安全的类 1.在设计线程安全类的过程中,需要包含三个基本元素:(1)找出构建对象状态的所有变量(2)找出约束状态变量的不变性条件(3)建立对象状态的并发访问管理策略 2.要分析对象的状态,首先从对象的域开始。如果对象中的所有的域都是基本变量,则这些域构成原创 2017-11-07 09:31:44 · 536 阅读 · 0 评论 -
基础构建模块
一、同步容器类 同步容器类实现线程安全的方式是:将它们的状态封装起来,并且对每一个公有的方法都进行同步,使得每次只有一个线程能访问容器的状态。 1.同步容器类的问题 同步容器类是线程安全的,但是在并发的对容器进行复合操作时还需要额外的客户端加锁。容器上常见的复合操作:(1)迭代(2)跳转,即根据指定顺序找到当前元素的下一元素(3)条件运算,比如若没有则添加这类。同步容器类要通过自身的锁来保护原创 2017-11-13 15:04:11 · 305 阅读 · 0 评论 -
线程安全性
1.线程安全的代码其核心在于要对状态访问【对象的状态中指的是存储在实例或者静态域的数据,对象的状态可能还包括其他依赖对象的域,在对象状态中包含了任何可能影响其外部可见行为的数据】操作进行管理,特别是共享的【共享指的是变量可以由多个线程同时进行访问】和可变的【可变的指的是在其生命周期内可以发生变化】状态的访问。 2.一个对象是否需要是线程安全的取决于它是否被多个线程访问。当多个线程同时访问一个可变原创 2017-11-06 09:22:18 · 271 阅读 · 0 评论 -
对象的共享
本文主要介绍如何共享和发布对象 1.Synchronized同步代码块不仅是确保以原子的方式执行操作,而且保证内存的可见性。我们不仅希望防止某个线程正在使用对象而另一个线程在同时修改对象状态,而且希望确保党一个线程对对象状态修改了以后,其他线程能看到发生的状态的变化。 2.可见性 在没有的同步情况下,编译器处理器以及运行时都有可能对操作的顺序进行一些意想不到的调整(重排序),因此在缺乏足够同原创 2017-11-06 11:59:33 · 391 阅读 · 0 评论