多线程实现-可控最大并发数线程池(newFixedThreadPool)
最多只会创建设置的线程数量,其他的任务处于等待队列。
测试:
package com.itcast.thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @Description 可控最大并发数线程池
* @Author by mocar小师兄
* @Date 2019/11/29 12:20
**/
public class NewFixedThreadPool {
public static void main(String[] args) {
//main方法时一个主线程
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);//并发数
for (int i = 0; i <10 ; i++) {
final int index=i;
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
//Thread.currentThread().setName("thread i =" + index);
System.out.println(Thread.currentThread().getName() +" ,循环index :" + index);
try {
Thread.sleep(2*1000);//休眠2s
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
fixedThreadPool.shutdown();
// fixedThreadPool.shutdownNow(); //立即关闭,正在运行的任务尝试关闭
System.out.println("main thread finish");
}
}