newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
示例如下:
package com.executor.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author 作者:wx
* @createDate 创建时间:Sep 17, 2019 11:13:39 AM
*/
public class FixedThreadPoolDemo {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; i++) {
int temp = i;
executorService.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000);
System.out.println(Thread.currentThread().getName() + "," + temp);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
}
输出如下:
总结:因为线程池大小为3,每个任务输出index后sleep 2秒,所以每两秒打印3个数字。