线程池整体的模型和handler是十分类似的:一个生产者-消费者模型。但和Handler不同的是,ThreadPoolExecutor不支持延时任务,这点在ScheduledThreadPoolExecutor得到了实现;Handler的线程安全采用synchronize关键字,而ThreadPoolExecutor采用的是Lock和一些利用CAS实现线程安全的整型变量;Handler无法拒绝任务,线程池可以;Handler抛出异常会直接程序崩溃,而线程池不会等等。
了解了线程池的内部源码,对于他更加了解后,那么可以根据具体的问题,做出更加合适的解决方案。ThreadPoolExecutor还有一些源码没有讲到,以及ScheduledThreadPoolExecutor、阻塞队列的源码,有兴趣读者可以自行去深入了解一下,拓展关于线程池的一切。
全文到此,假期肝文不容易啊,如果文章对你有帮助,求一个大拇指
,赞一下再走呗。 参考文献《Java并发编程的艺术》:并发编程必读,作者对一些原理讲的很透彻
《Java核心技术卷》:这系列的书主要是讲解框架的使用,不会深入原理,适合入门
Java并发编程:线程池的使用:博客园上一位很优秀的博主,文章写得通俗易懂且不失深度
全文到此,原创不易,觉得有帮助可以点赞收藏评论转发。
笔者才疏学浅,有任何想法欢迎评论区交流指正。
如需转载请评论区或私信交流。
另外欢迎光临笔者的个人博客:传送门