概述
在多线程执行任务时,可以使用线程池执行任务。
相关代码如下:
public static void main(String[] args) {
ThreadPoolExecutor executor=null;
try{
executor = new ThreadPoolExecutor(2, 3, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(8));
// 提交任务到线程池
for (int i = 0; i < 11; i++) {
executor.execute(() -> {
try {
Thread.sleep(1000); // 模拟任务执行时间
System.out.println("任务 " + Thread.currentThread().getId() + " 执行完成...");
} catch (InterruptedException e) {
e.printStackTrace();
}
});
}
}
catch (Exception ex){
ex.printStackTrace();
}
finally {
executor.shutdown();
}
}
这里可以看到线程池的
1.核心线程数
2.最大线程数
3.队列大小
我们可以测试一次最大可以提交的线程数为
最大线程数 + 队列大小。
如果提交的任务数大于这个数量,那么会抛出拒绝异常。