ThreadPoolExecutor的七个参数:
- corePoolSize 核心线程数
- MaxPS 最大线程数
- keepAliveTime 存活时间
- TimeUnit 时间单位
- BlockingQueue 任务队列
- ThreadFactory 线程工厂
- RejectStrategy 拒绝策略
Abort 抛异常
Discard 悄悄扔掉
DiscardOld 扔掉最先的任务
CallerRuns 谁提交任务谁来执行
package com.zhangxueliang.demo.springbootdemo.JUC.c_026_01_ThreadPool;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @ProjectName springbootdemo_src
* @ClassName T05_00_HelloThreadPool
* @Desicription TODO
* @Author Zhang Xueliang
* @Date 2019/12/5 15:34
* @Version 1.0
**/
public class T05_00_HelloThreadPool{
public class Task implements Runnable{
int i;
public Task(int i) {
this.i = i;
}
@Override
public void run() {
System.err.println(Thread.currentThread().getName()+" "+i);
}
}
}
class Test_T05_00_HelloThreadPool{
public static void main(String[] args) {
T05_00_HelloThreadPool t05_00_helloThreadPool = new T05_00_HelloThreadPool();
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2, 4, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(4), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
try{
for (int i = 0; i < 8; i++) {
threadPoolExecutor.execute(t05_00_helloThreadPool.new Task(i));
}
System.err.println(threadPoolExecutor.getQueue());
}finally {
threadPoolExecutor.shutdown();
}
}
}