diff --git a/s-day06/src/com/inmind/threadpool10/Demo12.java b/s-day06/src/com/inmind/threadpool10/Demo12.java new file mode 100644 index 0000000..f26b82e --- /dev/null +++ b/s-day06/src/com/inmind/threadpool10/Demo12.java @@ -0,0 +1,44 @@ +package com.inmind.threadpool10; + +import java.util.concurrent.*; + +/* +在java中使用一个接口表示线程池ExecutorService +如何获取线程池对象?? +方式一:直接创建实现类ThreadPoolExecutor 的对象 +方式二:Executors(线程池)的静态方法 + +方式一的构造方法: +ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, + TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) + +参数一:corePoolSize,指定线程池核心线程的数量 +参数二:maximumPoolSize,指定线程池的最大线程数量 +参数三:keepAliveTime,指定临时线程的存活时间 +参数四:unit,指定临时线程存活时间单位(秒,分,时,天) +参数五:workQueue 指定线程池的任务队列 +参数六:threadFactory,指定线程池的线程工厂 +参数七:handler,指定线程池的任务拒绝策略 + + +注意: + 1.临时线程什么时候会创建?? + 新任务提交到线程池,发现所有的核心线程都被占用,任务队列也满了,并且还可以创建临时线程时,才会创建新的临时线程 + + 2.什么时候会开始拒绝任务??? + 当所有的核心线程和临时线程都在忙,而且任务对列也都满了,新的任务还来,线程池就开始拒绝任务 + */ +public class Demo12 { + public static void main(String[] args) { + //线程池的多态 + ExecutorService threadpool = new ThreadPoolExecutor( + 3, + 5, + 8, + TimeUnit.SECONDS, + new ArrayBlockingQueue<>(4), + Executors.defaultThreadFactory(), + new ThreadPoolExecutor.AbortPolicy() + ); + } +}