深入浅出Java线程池:使用篇 (5)

只有一个线程的线程池,等待队列没有上限,每个任务都会按照顺序被执行。适用于对任务执行顺序有严格要求的场景。

ScheduledThreadPoolExecutor public static ScheduledExecutorService newScheduledThreadPool( int corePoolSize, ThreadFactory threadFactory) { return new ScheduledThreadPoolExecutor(corePoolSize, threadFactory); }

和ScheduledThreadPoolExecutor原生默认的构造器差别不大。

SingleThreadScheduledPoolExecutor public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory) { return new DelegatedScheduledExecutorService (new ScheduledThreadPoolExecutor(1, threadFactory)); }

控制线程只有一个。每个任务会按照顺序先后被执行。

小结

可以看到,Executors只是按照一些比较大的情景方向,对线程池的参数进行简单的配置。那可能会问:那我直接使用线程池的构造器自己设置不就完事了?

确实,阿里巴巴开发者手册也是这样建议的。尽量使用原生的构造器来创建线程池对象,这样我们可以根据实际的情况配置出更加规范的线程池。Executors中的线程池在一些极端的情况下都可能会发生OOM,那么我们自己配置线程池时就要尽量避免这个问题。

最后

关于线程池的使用总体上就介绍到这里,线程池有非常多的优点,希望下次需要创建线程的时候,不会只记得 new Thread 。

下一篇将深入线程池的内部实现原理,如果了解过Android的Handler机制会发现两者的设计几乎一模一样,也是非常有趣的。

希望文章对你有帮助。

参考文献

《Java并发编程的艺术》:并发编程必读,作者对一些原理讲的很透彻

《Java核心技术卷》:这系列的书主要是讲解框架的使用,不会深入原理,适合入门

:javaGuide,对java知识总结得很不错的一个博客

Java并发编程:线程池的使用:博客园上一位很优秀的博主,文章写得通俗易懂且不失深度

全文到此,原创不易,觉得有帮助可以点赞收藏评论转发。
笔者才疏学浅,有任何想法欢迎评论区交流指正。
如需转载请评论区或私信交流。

另外欢迎光临笔者的个人博客:传送门

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpszdy.html