记录一下最近学习java线程池shutdown和shutdownNow的原理,话不多说,先看看代码示例和运行结果。
shutdown原理
先看一下代码示例:
public static void main(String[] args) throws Exception {
ThreadPoolExecutor service = new ThreadPoolExecutor(1, 1, 60,
TimeUnit.SECONDS, new LinkedBlockingQueue<>(2), new RejectedExecutionHandler() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
System.out.println("reject task... ...");
}
});
service.submit(() -> {
System.out.println(LocalDateTime.now() + "---start task1");
try {
TimeUnit.SECONDS.sleep(2);
System.out.println(LocalDateTime.now() + "---end task1");
} catch (Exception e) {
System.out.println(LocalDateTime.now() + "---task1 exception");
}
});
service.submit(() -> {
System.out.println(LocalDateTime.now() + "---start task2");
try {
TimeUnit.SECONDS.sleep(4);
System.out.println(LocalDateTime.now() + "---end task2");
} catch (Exception e) {
System.out.println(LocalDateTime.now() + "---task2 exception");