package zte.thread;
import java.util.LinkedList;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
/**
* Created by on 2019/11/22.
**/
public class ThreadPoolExecutorTest {
public static void main(String[] args) {
/*
*
* public ThreadPoolExecutor(int corePoolSize,-->必填:核心线程数,当线程数<核心线程,来任务优先创建线程,已存在线程一致存活
int maximumPoolSize,--> 必填:当线程数>=corePoolSize,且任务队列已满时。线程池会创建新线程来处理任务;
当线程数=maxPoolSize,且任务队列已满时,线程池会交由handler处理
long keepAliveTime,--> 必填:线程空闲时保活时间,当线程空闲时间达到keepAliveTime时,线程会退出,直到线程数量=corePoolSize
TimeUnit unit,--> 必填:保活时间单位TimeUnit.
BlockingQueue<Runnable> workQueue,-->必填:核心线程满新任务添加到队列中,
LinkedBlockingQueue():本身无界,但可以设置数量LinkedBlockingQueue(3)
ArrayBlockingQueue():有界队列,必须设置容量
ThreadFactory threadFactory,-->new ThreadFactoryBuilder()
.setPriority(Thread.NORM_PRIORITY)-->优先级,优先级高优先获得操作系统资源
.setDaemon(false)-->设置线程是否为守护线程
.setNameFormat("线程号-%d")-->打印线程号
.build()
RejectedExecutionHandler handler)-->
* */
final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
21, 210,
5, TimeUnit.MINUTES,
new LinkedBlockingQueue<>(3),
new ThreadFactoryBuilder()
.setPriority(Thread.NORM_PRIORITY)
.setDaemon(false)
.setNameFormat("optical-pce-d-controller-%d")
.build()
);
threadPoolExecutor.allowCoreThreadTimeOut(true);//核心线程是否会被关闭。
threadPoolExecutor.awaitTermination()
}
}
创建线程池推荐方法
最新推荐文章于 2024-07-18 13:49:42 发布