创建线程池有几种方式分别为:
- newFixedThreadPool(int poolSize)
- 创建一个固定的长度的线程池,每次提交任务的时候会创建一个新的线程,直到线程池最大的范围。自动回收哪些空闲的线程,如何发生异常或者结束了,线程池会补充一个新线程
- newCachedThreadPool()
- 创建一个可缓存的线程池,当线程池线程超过处理请求的时候,将自定回收线程。而当需求添加的时候,可以自动添加新的线程。线程池的规模不存在限制
- newSingleThreadExecutor()
- 一个单线程的Executor,它创建单个工作线程来执行任务。如何改线程异常结束了,会创建一个新的线程来替补结束的线程继续工作。它的特点是能依照列队中顺序来串行执行任务
- newScheduledThreadPool(int poolSize)
- 创建一个固定长度的线程,而且一延迟或定时的方式来执行任务
ExecutorService threadPool= Executors.newFixedThreadPool(5);
for(int j=0;j<10;j++){
final int index=j;
threadPool.execute(new Runnable(){
@Override
public void run() {
for(int i=0;i<5;i++){
System.out.println(Thread.currentThread().getName()+"运行次数"+i+"线程数"+index);
}
}});