java线程太多会导致什么问题?
每个线程会占用1m(可以通过xss设置),线程太多就会oom;
线程太多会相互竞争cpu资源,在获取和释放cpu资源的过程都会进行线程切换,线程多切换就多,cpu忙于切换浪费时间,所以才会有reactor模型;
如果线程之间还存在各种资源的锁争夺问题,那么线程越多,死锁的概率也越高。
求各位大神,Java多线程看哪本书好?
《Java并发编程实战》
作者:盖茨(Brian Goetz)
出版社:机械工业出版社
本书深入浅出地介绍了Java线程和并发,是一本的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,很后介绍了一些不错主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。
书不在多,一本就行!本书是Java进阶的必看书目之一,作者Brian Goetz有20多年的软件咨询行业经验,并著有至少75篇关于Java开发的文章。个人感觉本书读起来章节安排得还行,理论由浅入深,涉及的案例也比较典型。相信仔细研读可以带来不小的收获~希望能帮助到题主。
推荐java并发编程实战这本书。
这本书从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则。
如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容。
最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。
总之,书中介绍的比较全,原理解析比较透彻。希望我的回答能帮到你。
有本书叫《Java线程》,O'Reilly出版社的。
O'Reilly出的书口碑好像还不错,其java系列的书有好多都是很具体,好像还有像一本只讲JMS的,反正就是类似的书。想看某个分支具体讲解的书去O'Reilly翻翻。
一个五年经验的java工作经验深刻推荐
第一本,java并发编程实践,这本书不仅解释了它们如何工作,如何使用,还阐释了创造它们的原因和背后的设计模式
第二本,深入理解java虚拟机,JVM高级特性和最佳实践 ,这本书围绕内存管理,执行子系统程序编译和优化,高效并发等核心对jvm进行了全面深入的分析
希望对您有用,一起加油!
如何监控Java线程池运行状态?
如果想监控一个线程池的执行状态,线程池执行类ThreadPoolExecutor给出了相关的 API, 能实时获取线程池的以下信息:
当前活动线程数
正在排队中的线程数
已经执行完成的线程数
总线程数
……
总线程数 = 排队线程数 + 活动线程数 + 执行完成的线程数
1. 代码示例
创建ThreadPoolExecutor实例:
通过ThreadPoolExecutor的API来获取线程运行信息:
2. 代码运行分析
线程池提交了 100000 个任务,但同时只有 50 个线程在工作,我们每间隔 3 秒来获取当前线程池的运行状态。
2.1 第一次程序输出
当前排队线程数:99950
当前活动线程数:50
执行完成线程数:0
总线程数(排队线程数 + 活动线程数 + 执行完成线程数):100000
2.2 第二次程序输出
当前排队线程数:99800
当前活动线程数:50
执行完成线程数:150
总线程数(排队线程数 + 活动线程数 + 执行完成线程数):100000
2.3 最后输出
当前排队线程数:0
当前活动线程数:0
执行完成线程数:100000
总线程数(排队线程数 + 活动线程数 + 执行完成线程数):100000
因此,了解清楚这些 API 的使用方法后,我们想监控线程池的状态就非常方便了。
欢迎关注笔者,持续分享有价值的优质架构文章。