Atitit.java线程池使用总结attilax 1.1. 动态更改线程数量 1 1.2. code 1 三、线程池的原理 其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下

Atitit.java线程池使用总结attilax

1.1. 动态更改线程数量 1

1.2. code 1

三、线程池的原理

其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态。

四、Java线程池

java关于线程池的主要内容有:

接口:ExecutorExecutorServiceScheduledExecutorServiceCompletionService

类:ExecutorsAbstractExecutorServiceThreadPoolExecutorScheduledThreadPoolExecutorExecutorCompletionService

以上这些,我不可能一一介绍,这里只介绍重要的两个类ExecutorsThreadPoolExecutor

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

原文地址:https://www.cnblogs.com/attilax/p/15197698.html