背景
为了方便测试,设置核心线程数(corePoolSize)为2,最大线程数(maximumPoolSize)为3,任务队列长度为3。
构建测试环境
创建一个线程池,任务执行时长通过doSomeThing的sleep时长来决定。
public static void testThreadPoolExecutor(int listSize) {
ThreadPoolExecutor executor = new ThreadPoolExecutor(
2, 5, 10L,
TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(3));
if (listSize <= 0){
return;
}
try {
for (int i = listSize; i > 0; i--) {
executor.execute(() -> doSomeThing());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
executor.shutdown();
while (true) {
if (executor.isTerminated()) {
break;
}
}
}
}
private static void doSomeThing() {
try {