大家好,今天小编关注到一个比较有意思的话题,就是关于线程池编程源码教程的问题,于是小编就整理了2个相关介绍线程池编程源码教程的解答,让我们一起看看吧。
在java并发编程中,如何扩展和优化线程池?
在Java中多线程并不陌生,在一定的范围内,多线程数量的增加会明显提升整个系统的吞吐性能,但是线程本身会极大的耗费内存空间,线程的频繁创建和回收也极其占用CPU***,多线程甚至会拖垮整个服务!
所以,线程的利用必须掌握在一个度,太少的线程数可能会浪费CPU***,而太高也极有可能反而降低整个应用性能;
线程池:基于使用多线程存在的问题,jdk提出了线程池技术,类似于数据库连接池,都是保持池中部分线程活跃状态,在需要使用线程的时候,直接从线程池中获取,使用。当线程使用结束,就进行回收(直接放回池中等待,而不是GC),这样就能避免了线程的频繁创建和回收。
JAVA中的线程池:JDK提供了线程池框架Executor,帮助程序更好的管理线程。总的结构如下截图:
比较常见的线程池对象获取方式为:
①newSingleThreadExecutor():返回单线程的线程池,一个接一个的处理任务,线程异常的时候,会创建新的线程替代; ②newFixedThreadPool:在达到最大线程之前,有一个任务就创建一个线程,直到达到最大线程数量; ③newCachedThreadPool:动态的设置最合适的线程数量,最大为JVM能够支持的大小; ④newScheduledThreadPool:指定线程数量,并周期性的执行任务; ⑤newSingleThreadScheduledExecutor:指定线程数量1个,并周期性的执行任务;
从源码来看,上面几种线程池底层都是的ThreadPoolExecutor对象,查看源码可知比较重要的属性(对象)截图如下:
定义了线程池中的线程数量,最大线程池数量,线程工厂(用于线程的创建),workQuere任务队列,handler拒绝策略等属性,用于线程池的对象初始化和任务调度!
下图是ThreadPoolExecutor对象中的execute方法截图:
解释如下:
线程池创建和销毁是有代价的,所以可以通过提前创建线程池来缓解这个问题。但是创建多少个是个问题?
一般根据业务复杂度,比如提前创建100个,然后设置一个低水位和高水位,比如20% 和80%,当达到低水位且持续一段时间,就可以释放一部分。当高水位一段时间后,可以动态增加一部分。同时增加手动设置的api可以根据预测提前调整。
求各位大神,J***a多线程看哪本书好?
这本书从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则。
如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容。
最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。
总之,书中介绍的比较全,原理解析比较透彻。希望我的回答能帮到你。
《J***a并发编程实战》
作者:盖茨(Brian Goetz)
出版社:机械工业出版社
本书深入浅出地介绍了J***a线程和并发,是一本的J***a并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,很后介绍了一些不错主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。
书不在多,一本就行!本书是J***a[_a***_]的必看书目之一,作者Brian Goetz有20多年的软件咨询行业经验,并著有至少75篇关于J***a开发的文章。个人感觉本书读起来章节安排得还行,理论由浅入深,涉及的案例也比较典型。相信仔细研读可以带来不小的收获~希望能帮助到题主。
多线程学习,一定有并发编程思维,这个很重要,要不看什么书也是白搭,理解好并发中的一个概念:***,锁,竞争之类的。
理解jvm原理,一些锁的底层实现都是和jvm撤上关系的 ,建议看并发编程的时候结合jvm的相关书籍看。
书推荐看《j***a并发编程的艺术》 ,从jdk出发,讲解一些使用原理上的问题。
一个五年经验的j***a工作经验深刻推荐
第一本,j***a并发编程实践,这本书不仅解释了它们如何工作,如何使用,还阐释了创造它们的原因和背后的设计模式
第二本,深入理解j***a机,JVM高级特性和最佳实践 ,这本书围绕内存管理,执行子系统程序编译和优化,高效并发等核心对jvm进行了全面深入的分析
希望对您有用,一起加油!
有本书叫《J***a线程》,O'Reilly出版社的。
O'Reilly出的书口碑好像还不错,其j***a系列的书有好多都是很具体,好像还有像一本只讲JMS的,反正就是类似的书。想看某个分支具体讲解的书去O'Reilly翻翻。
到此,以上就是小编对于线程池编程源码教程的问题就介绍到这了,希望介绍关于线程池编程源码教程的2点解答对大家有用。