简介
线程池循环执行一些任务,某个线程执行超时,需要将超时的线程任务抛弃。
示例
修改前
当遇到超时的任务就凉凉,得重启程序。
Task.java:
public class Task implements Runnable {
private final int sleepTime;
private final CountDownLatch countDownLatch;
public Task(int sleepTime, CountDownLatch countDownLatch) {
this.sleepTime = sleepTime;
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
Thread.sleep(sleepTime == Demo.THREAD_SIZE ? Demo.LONG_RUNNING_THREAD_TIME : Demo.SHORT_RUNNING_THREAD_TIME);
System.out.println("任务 " + sleepTime + " 干完了");
countDownLatch.countDown();
}
}
Demo.java:
public class Demo {
/**
* 线程数量
* 前三个任务执行 {@link Demo#SHORT_RUNNING_THREAD_TIME} ms