红河优才网站建设,深圳旅游必去十大景点,wordpress 获取主题路径,oa办公软件一、池化思想和JAVA线程池
池化是很重要的思想#xff1b;池化的好处是提供缓冲和统一的管理。这个笔者在本人的数据库连接池的博客中已经提到过了#xff08;JAVA常用数据库连接池_王者之路001的博客-CSDN博客
#xff09;。
线程池是另一种池化思想的运用#xff0c;把…一、池化思想和JAVA线程池
池化是很重要的思想池化的好处是提供缓冲和统一的管理。这个笔者在本人的数据库连接池的博客中已经提到过了JAVA常用数据库连接池_王者之路001的博客-CSDN博客
。
线程池是另一种池化思想的运用把线程放入池中进行管理。这种方法的好处是可以避免线程的创建、切换和销毁因为这些过程非常耗资源。
JAVA线程池就是这样的一种线程池。
二、JAVA线程池基本原理
JAVA线程池的基本原理其实就是对线程的生产者-消费者模型。线程池对产生的任务进行序贯执行。
JAVA线程池主要做的事情是对线程池的管理和任务的执行。 如上图所示右半部分是线程池的管理而左半部分是任务的执行。
任务执行通过阻塞队列来完成。
线程池执行任务如下图所示 JAVA线程池会确定核心线程数和最大线程数来控制线程池的大小。
三、JAVA线程池的使用
JAVA线程池主要有newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor和newScheduledThreadPool。
一般通过父类ExecutorService声明使用。代码样例如下
public class FixedThreadPool {public static void main(String[] args) {ExecutorService executorService Executors.newFixedThreadPool(10);for (int i 0; i 200; i) {executorService.execute(new Task());}executorService.shutdown();}
}
其中Task为相关线程。也可以采用匿名函数等方式运行。
四、避免的问题
一般情况下大厂都不建议工程师自己创建线程池因为线程池创建很容易消耗大量内存。大厂一般有自己的线程池创建模型。
参考文献
[1]Java线程池实现原理及其在美团业务中的实践 - 美团技术团队
[2]面试必问Java 线程池 | Java程序员进阶之路
[3]JUC线程池: ThreadPoolExecutor详解 | Java 全栈知识体系
[4]https://www.cnblogs.com/vipstone/p/14149065.html
[5]彻底搞懂Java线程池的工作原理-51CTO.COM
[6]https://www.cnblogs.com/pcheng/p/13540619.html