仅提供学习,侵权必删,如有错误,敬请告知
一、ThreadPoolExecutor
package jihe;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class MyThreadPool {
public static void main(String[] args) {
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, //初始线程数
15, //最大线程数
60, //时间数
TimeUnit.SECONDS,//时间单位
new LinkedBlockingQueue<Runnable>(60), //阻塞数量
Executors.defaultThreadFactory(), //创建线程工厂
new ThreadPoolExecutor.CallerRunsPolicy() //拒绝策略
);
try {
for (int i = 0; i < 15; i++) {
executor.execute(()->{
System.out.println(Thread.currentThread().getName()+"处理过!");
});
}
} finally {
// TODO: handle finally clause
executor.shutdown();
}
}
}
二、newFixedThreadPool
ExecutorService executorService = Executors.newFixedThreadPool(50); //指定线程池线程数量
三、newSingleThreadExecutor
ExecutorService executorService = Executors.newSingleThreadExecutor(); //线程池一个线程数
四、newCachedThreadPool
ExecutorService executorService = Executors.newCachedThreadPool(); //线程池自动分配线程