并发
文章平均质量分 83
ming-world
春生,夏糜,秋去,冬烬,春又来。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对象的共享
上一篇已经介绍了线程的安全性,包括原子性操作和锁机制等内容,如果还没了解此部分内容可参考线程安全性。 从上一篇线程的安全性我们可以知道同步代码块和同步方法可以确保以原子的方式执行操作,这一篇则是介绍同步的另外一个重要的方面:内存可见性 可见性 一个线程对共享变量值得修改,其他线程能够看到发生的状态变化。 下列清单说明了当多个线程在没有同步的情况下共享数据时出现的错误 pu...原创 2018-02-04 20:29:56 · 417 阅读 · 0 评论 -
线程安全性
什么是线程安全性 某个类的行为与其规范完全一致。当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。换句话说就是当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个都能表现出正确的行为,那么就称这个类时线程安全的。 一般来说,线程不安全的是指存储在状态变量(例如实例或静态域)中...原创 2018-02-03 21:22:36 · 402 阅读 · 0 评论 -
对象的组合
设计线程安全的类 设计线程安全类的过程中,需要包括以下三个基本要素: 找出构成对象状态的所有变量 找出约束状态变量的不可变条件 建立对象状态的并发访问管理策略 收集同步需求 确定对象的不可变条件与后验条件,借助原子性与封装性来满足在状态变量的有效值或状态转换上的各种约束条件。 不可变条件用于判断状态是否是有效的,后验条件用来判断状态迁移是否是有效的,当下一个状态需要依赖当...原创 2018-02-10 12:34:22 · 725 阅读 · 0 评论 -
多线程之闭锁、栅栏和信号量
闭锁 一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。当闭锁到达结束状态后,将不会再改变状态,因为这扇门将永远保持打开状态。闭锁可以用来确保某些活动直到其他活动都完成后才继续执行。 应用场景: 确保某个计算在其需要的所有资源都被初始化之...原创 2018-03-08 12:31:28 · 1447 阅读 · 0 评论
分享