第三部分 活跃性、性能和测试
java并发编程实战-第10章-避免活跃性危险
10.1.1 锁顺序死锁
GUI为什么设计成单线程的原因
10.1.2 动态的锁顺序死锁
转账时,对于参数账户a和b,如果设计成a转移b时先设定先锁定a再锁定b,则b转给a时就会先锁定b
再锁定a,造成锁顺序死锁
此时可以通过取a和b的hash值,来确定锁定顺序的规则,如果有主键的话,则直接通过主键来确定
锁定规则,而不用判断hash值是否相同的情况
10.1.3 在协作对象发生死锁
如果在类A 的方法a1 中调用类B的方法b2, 在B中方法b2调用类A的方法a2 。如果方法都是同步的,
则会造成死锁。类A方法先获得类A对象的锁然后试图获得类B的锁,而此时类B的方法b2已经获得类B对象的
锁试图去获得类A对象的锁
10.1.4 开发调用
开发调用方法,在方法中用同步代码块, 更容易进行死锁分析。有时候会造成原子性的问题,但
许多情况下,是某个操作失去原子性是可以接受的。比如更新出租车位置以及通知出租车车队
10.1.5 资源死锁
假如一个任需要连接两个资源池中D1,D2,任务a 和任务b 获取D1和D2 的顺序可能是相反的
线程饥饿死锁,如果某些任务需要等待另外一些任务的结果
10.2 死锁的避免和诊断
两阶段分析:1找出什么地方需要获得多个锁2对这些实例进行全局分析,确保获取锁的顺序一致
10.2.1 支持定时的锁
Lock类中的tryLock 可以设定锁的时间(不过只有在两个锁的时间有效,如果嵌套很多锁的时候,
也无法释放)
Lock后续学习,暂时不理解
(后续学)
10.2.2 通过线程转储信息来分析死锁
Thread Dump
(后续学)
10.3 其他活跃性危险
包括饥饿、丢失信号和活锁等(“丢失信号” 14.2.3节中介绍)
10.3.1 饥饿
最常见的资源cpu时钟周期,优先级使用不当,不造成
避免使用线程优先级,调整了优先级,将造成程序运行与平台相关。
10.3.2 糟糕的响应性
后台cpu密集型任务会造成前端响应时间,这时候发挥线程优先级。降低其优先级
不良的锁
10.3.3 活锁
线程不断重复执行相同的操作,而且总是失败
小结:
设计时应该避免顺序死锁,最好的方法是程序中始终使用开发调用
相关推荐
62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java并发编程实战62-Java...
《Java并发编程实战》是Java并发编程领域的一本经典著作,它深入浅出地介绍了如何在Java平台上进行高效的多线程编程。这本书的源码提供了丰富的示例,可以帮助读者更好地理解书中的理论知识并将其应用到实际项目中。...
Java并发编程实践-电子书-01章.pdf Java并发编程实践-电子书-02章.pdf Java并发编程实践-电子书-03章.pdf Java并发编程实践-电子书-04章.pdf Java并发编程实践-电子书-05章.pdf Java并发编程实践-电子书-06章.pdf ...
《Java并发编程实战》这本书是关于Java语言中并发编程技术的经典著作。它详细介绍了如何在Java环境中有效地实现多线程程序和并发控制机制。在Java平台上,由于其本身提供了强大的并发编程支持,因此,掌握并发编程...
《Java并发编程实战》是一本深入探讨Java平台并发编程的权威指南。这本书旨在帮助开发者理解和掌握在Java环境中创建高效、可扩展且可靠的多线程应用程序的关键技术和实践。它涵盖了从基本概念到高级主题的广泛内容,...
《Java并发编程实战》这本书是Java开发者深入理解并发编程的重要参考书籍。本书旨在帮助程序员解决在多线程环境中遇到的实际问题,提升系统性能并保证其稳定性。随书源码提供了丰富的示例,让读者能够动手实践,加深...
在Java并发编程中,数据的封装与访问控制、线程安全性的考量、同步机制的使用是重要的基础概念和技巧。以下是从给出的文件内容中提取出的详细知识点: 1. 数据封装与访问控制:确保内部私有数据不被轻易访问,并且...
第三部分聚焦于性能优化,讲解了如何避免活跃性问题(如死锁和活锁)以及如何提高并发代码的性能和可伸缩性。此外,还介绍了测试并发代码正确性和性能的实用技巧,这对于在生产环境中确保程序的稳定性和效率至关重要...
《Java 并发编程实战》是一本专注于Java并发编程的权威指南,对于任何希望深入了解Java多线程和并发控制机制的开发者来说,都是不可或缺的参考资料。这本书深入浅出地介绍了如何在Java环境中有效地管理和控制并发...
9. **第九章:实战与性能调优** - 最后一章可能包括了实际并发编程中的最佳实践,性能测试和监控,以及如何根据系统需求进行性能调优。 以上只是基于常规并发编程书籍结构的猜测,具体内容还需要参考实际的电子书...
《JAVA并发编程实践》是Java开发人员深入理解并发编程的一本经典著作,由Doug Lea撰写,本书中文版高清完整,包含丰富的书签,便于读者查阅和学习。这本书旨在帮助开发者掌握在Java平台上进行高效、安全并发编程的...
Java并发编程---synchronized关键
深入地探讨Java并发编程实践中的显示锁概念,我们聚焦于《Java并发编程实践-电子书-07章》所提供的丰富内容。本章着重于展示如何使用显示锁(也称为高级锁),并详细介绍了Lock和ReentrantLock接口以及它们在并发...
Java并发编程实践-电子书-09章.pdf
第10章 避免活跃性危险 第11章 性能与可伸缩性 第12章 并发程序的测试 第四部分 高级主题 第13章 显式锁 第14章 构建自定义的同步工具 第15章 原子变量与非阻塞同步机制 第16章 Java内存模型 附录A 并发性...
Java并发编程实践是Java开发中不可或缺的一个领域,它涉及到如何高效、正确地处理多线程环境中的任务。这本书的读书笔记涵盖了多个关键知识点,旨在帮助读者深入理解Java并发编程的核心概念。 1. **线程和进程的...