2 回答

TA贡献1998条经验 获得超6个赞
写了个小例子,可以简单实现你的要求
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) throws InterruptedException {
ExecutorService es = Executors.newFixedThreadPool(1);
es.execute(new Runnable() {
@Override
public void run() {
int count = 7;
while (count > 0) {
System.out.println(1);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// 退出执行
System.out.println("interrupt, then quit");
return;
}
count--;
}
}
});
// 关闭线程池
es.shutdown();
// 阻塞操作,等待5s
boolean finished = es.awaitTermination(5, TimeUnit.SECONDS);
// 如果过了5s线程还没有完成, 强制关闭, interrupt Runnable 线程, 进入 InterruptedException 处理流程
if (!finished) {
es.shutdownNow();
}
System.out.println("task 3");
}
}
添加回答
举报