![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《并发编程实战》
#_
这个作者很懒,什么都没留下…
展开
-
4.对象的组合
目录1.设计线程安全的类1.1收集同步需求1.2依赖状态的操作1.3状态的所有权2.实例封闭2.1Java监视器模式2.2示例(车辆追踪)3.线程安全性的委托3.1示例:基于委托的车辆追踪3.2独立的状态变量3.3委托失效3.4发布底层的状态变量3.5示例:发布状态的车辆追踪器4.在现有线程安全类中添加功能4.1客户端加锁机制4....原创 2019-04-04 13:16:45 · 367 阅读 · 0 评论 -
11.性能与可伸缩性
目录1Amdahl定律1.1示例:在各种框架中隐藏的串行部分1.2Amdahl定律的应用2线程引入的开销2.1上下文切换2.2内存同步2.3阻塞3减少锁的竞争3.1缩小锁的范围3.2减少锁的粒度3.3锁分段3.4一些替代独占锁的方法3.5向对象池说“不”4比较Map的性能总结1Amdahl定律并行计算中的加速比是用并行前...原创 2019-04-18 20:43:57 · 217 阅读 · 0 评论 -
14.条件队列和AQS
目录1状态依赖性的管理(引入条件队列)1.1示例:将前提条件的失败传递给调用者1.2示例:通过轮询与休眠来实现简单的阻塞1.3条件队列(wait、notify)2使用条件队列2.1条件谓词2.2过早唤醒2.3丢失的信号2.4通知2.5示例:阀门类3显式的Condition对象4Synchronizer剖析5AbstractQueuedSynch...原创 2019-04-23 20:48:40 · 273 阅读 · 0 评论 -
10.避免活跃性危险(死锁)
目录1死锁1.1锁顺序死锁1.2动态的锁顺序死锁1.3在协作对象之间发生的死锁1.4开放调用1.5资源死锁2死锁的避免与诊断2.1支持定时的锁2.2通过线程转储信息来分析死锁3其他活跃性危险3.1饥饿3.2活锁总结1死锁1.1锁顺序死锁1.2动态的锁顺序死锁1.3在协作对象之间发生的死锁...原创 2019-04-18 08:53:11 · 179 阅读 · 0 评论 -
13.显式锁
目录1Lock与ReentrantLock1.1轮训锁与定时锁1.2可中断的锁获取操作2性能考虑因素3公平性4在synchronized和ReentrantLock之间进行选择5读-写锁总结1Lock与ReentrantLock1.1轮训锁与定时锁1.2可中断的锁获取操作2性能考虑因素1.6之后...原创 2019-04-22 20:44:25 · 158 阅读 · 0 评论 -
12.并发程序的测试
1正确性测试1.1对阻塞操作的测试1.2安全性测试代码看书上1.3产生更多交替操作总结ps:这节经验不足理解不深待以后补充...原创 2019-04-22 16:47:21 · 173 阅读 · 0 评论 -
7.取消与关闭
目录1任务取消1.1中断1.2通过Future实现取消1.3处理不可中断的阻塞1.4采用newTaskFor来封装非标准的取消2.停止基于线程的服务2.1示例:日志服务2.2关闭ExecutorService2.3“毒丸”对象2.4shutdownNow的局限性3处理非正常的线程终止(RuntimeException)4JVM关闭4.1关闭钩...原创 2019-04-13 17:28:57 · 223 阅读 · 0 评论 -
5.基础构建模块(并发包)
目录1.同步容器类1.1同步容器类的问题1.2迭代器与ConcurrentModificationException1.3隐藏迭代器2.并发容器2.1ConcurrentHashMap2.2额外的原子Map操作2.3CopyOnWriteArrayList3.阻塞队列和生产者-消费者模式3.1串行线程封闭3.2双端队列与工作密取4阻塞方法与中断方法...原创 2019-04-09 14:54:50 · 184 阅读 · 0 评论 -
8.线程池的使用
目录1在任务与执行策略之间的隐性耦合1.1线程饥饿死锁1.2运行时间较长的任务2设置线程池的大小3配置ThreadPoolExecutor3.1线程的创建和销毁3.2管理队列任务3.3饱和策略3.4线程工厂3.5在调用构造函数后再定制ThreadPoolExecutor4扩展ThreadPoolExecutor示例:给线程池添加统计信息5...原创 2019-04-15 20:34:33 · 184 阅读 · 0 评论 -
6.任务执行
目录1在线程中执行任务1.1串行地执行任务1.2显示地为任务创建线程1.3无限制创建线程的不足2Executor框架2.1实例:基于Executor的WEB服务器2.2线程池2.3Executor生命周期2.4延迟任务与周期任务3.找出可利用的并行性3.1Callable与Future3.2实例:使用Future实现页面渲染器3.3在异构任务并行...原创 2019-04-11 21:08:52 · 314 阅读 · 0 评论 -
2.Java内存模型与单例模式,初始化安全性
目录1.内存模型1.1.平台的内存模型1.2.重排序1.3.Java内存模型happens-before1.4.借助同步2.发布对象2.1不安全的发布2.2安全的发布2.3安全初始化模式2.4双重检查锁3.初始化过程中的安全性总结1.内存模型1.1.平台的内存模型1.2.重排序1.3.Java内存模型ha...原创 2019-04-01 17:22:18 · 266 阅读 · 0 评论 -
3.发布对象
目录1可见性1.1失效数据1.2非原子64位操作1.3加锁与可见性1.4volatile变量2.对象发布与逸出2.1this逸出3.线程封闭3.1Ad-hoc线程封闭3.2栈封闭3.3ThreadLocal4.不变性4.1final域4.2使用volatile类型来发布不可变对象5.安全发布对象5.1不正确的发布:正确的对象被破坏...原创 2019-04-01 13:57:06 · 344 阅读 · 0 评论 -
1.线程安全性
目录1.什么是线程安全性2.原子性2.1竞态条件2.2复合操作3.加锁机制3.1内置锁3.2重入4.用锁来保护状态5.性能编写线程安全代码,核心在于:对共享及可变状态的访问进行管理变量不共享,不可变,使用同步Java中同步机制:synchronized、volatile、显示锁、原子变量1.什么是线程安全性 无状态对象...原创 2019-03-30 20:29:24 · 191 阅读 · 0 评论 -
15.原子变量与非阻塞同步机制CAS
目录1锁的劣势2硬件对并发的支持2.1CAS2.2非阻塞的计数器2.3JVM对CAS的支持3原子变量类3.1原子变量是一种“更好的volatile”3.2性能比较:锁与原子变量4非阻塞算法4.1非阻塞的栈4.2非阻塞的链表LinkedQueue4.3原子的域更新器(ConcurrentLinkedQueue)4.4ABA问题总结1锁的...原创 2019-04-24 16:08:41 · 199 阅读 · 0 评论