Atitit.java线程池使用总结attilax
三、线程池的原理
其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。
四、Java线程池
java关于线程池的主要内容有:
接口:Executor、ExecutorService、ScheduledExecutorService、CompletionService
类:Executors、AbstractExecutorService、ThreadPoolExecutor、ScheduledThreadPoolExecutor、ExecutorCompletionService
以上这些,我不可能一一介绍,这里只介绍重要的两个类Executors和ThreadPoolExecutor
2. Executors
虽然通过ThreadPoolExecutor可以完成线程池的创建,但是创建过程复杂繁琐,要求程序员对于每一个参数的意义都很清楚,对于创建的流程也必须十分了解,而通过Executors则可以大大简化线程池的创建过程,因此强烈建议程序员使用较为方便的 Executors 工厂方法 Executors.newCachedThreadPool()(无界线程池,可以进行自动线程回收)、Executors.newFixedThreadPool(int)(固定大小线程池)和 Executors.newSingleThreadExecutor()(单个后台线程),它们均为大多数使用场景预定义了设置。否则,在手动配置和调整此类时,使用以下指导:
1.1. 动态更改线程数量
在大多数情况下,核心和最大池大小仅基于构造来设置,不过也可以使用 setCorePoolSize(int) 和 setMaximumPoolSize(int) 进行动态更改。
1.2. code
ExecutorService ExecutorService1_theardpool = Executors.newFixedThreadPool(20);
ExecutorService1_theardpool.submit(new Runnable() {
@Override
public void run() {
createTask(wechatPicLmt, targetDir, strPath_final, cur_f);
}
}); // end sumbit
java线程池简介 - 鹏霄万里展雄飞 - 博客频道 - CSDN.NET.html
自定义线程工厂 - Jackson Zhang - 博客频道 - CSDN.NET.html
Java多线程之-----实现自己的ThreadFactory - 技术是我的毕生追求 - 博客频道 - CSDN.NET.html
java线程池简介 - 鹏霄万里展雄飞 - 博客频道 - CSDN.NET.html