1、拒绝策略
2、第一种
使用多线程进行训练任务时,如果corePoolSize和maximumPoolSize都满了,那新来的线程又不能丢弃,所以已有的拒绝策略不太能满足需求
ExecutorService executor = new ThreadPoolExecutor(4, // corePoolSize
4, // maximumPoolSize
0, // keepALiveTime
TimeUnit.SECONDS,
new SynchronousQueue<>(), // SynchronousQueue无缓冲等待队列
(r, thread)->{
// 自定义拒绝策略,不丢弃线程,如果满了,等待180秒
try {
Thread.sleep(180000);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread.submit(r);
}
);