背景
对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案。
随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorService),很多人选择了parallelStream() 并行流,底层使用forkjoin实现并行处理。
那么并行和并发又有什么区别?究竟改如何选择?滥用时又会有什么影响?
这些问题我分以下几篇文章进行详细说明:
1. 多线程并发和并行的区别
2. parallelStream()并行滥用的后果
3. forkjoin和forkjoinpool讲解
4. 线程池正确用法(本文)
为什么用线程池
- 用线程池之前有一个问题,就是为什么用多线程?
由于io等待存在,单线程在web开发上是对cpu极大的浪费(tomcat就是线程池的),多线程是必须的。 - 线程池解决的问题
- 减小线程池创建和销毁销毁的性能(java线程是内核创建)
- 线程池提供了队列,当任务多时可以合理使用cpu和内存
- 线程池提供定时调用功能
- 线程池提供拒绝策略, 超过预定符合时,可以执行预定逻辑
以上这些都是直接使用多线程很难实现的。

本文探讨了Java中线程池的使用,包括为何使用线程池、线程池参数详解,以及使用线程池的注意事项。线程池能有效管理资源,减少线程创建销毁的开销,提供定时任务及拒绝策略等功能。合理的线程池配置可以避免资源浪费,而滥用可能导致性能问题。了解线程池核心参数如corePoolSize、maximumPoolSize和workQueue等的含义至关重要。
最低0.47元/天 解锁文章
3090

被折叠的 条评论
为什么被折叠?



