常用三种线程池
newFixedThreadPool
定义一个定长线程池,可控制最大线程并发数,超过的线程会在队列中等待
public class Test {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i <5 ; i++) {
executorService.execute(()->{
System.out.println(Thread.currentThread().getName()+"处理业务");
});
}
}
}
输出
pool-1-thread-1处理业务
pool-1-thread-2处理业务
pool-1-thread-3处理业务
pool-1-thread-4处理业务
pool-1-thread-5处理业务
内部实现
corecorePoolSize和maximumPoolSize值是相等的,它使用的是LinkedBlockingQueue
public static ExecutorService newFixedThreadPool(int nThreads) {