ExecutorService
是 Java 并发包 java.util.concurrent
中的一个接口,用于管理和控制线程的执行。它提供了一种将任务提交给线程池执行的方式,从而简化了多线程编程。
InterruptedException
是 Java 中的一个异常,通常在一个线程正在等待、休眠或以其他方式占用时,如果它被中断,则会抛出此异常。
ExecutorService
的优势包括:
ExecutorService
接口有多种实现类,常见的包括:
ThreadPoolExecutor
:基于线程池的实现。ScheduledThreadPoolExecutor
:支持定时和周期性任务执行。ExecutorService
适用于以下场景:
在 ExecutorService
中,任务(通常是实现了 Runnable
或 Callable
接口的类)可以接受 InterruptedException
。当一个线程在执行任务时被中断,它会抛出 InterruptedException
,任务可以通过捕获这个异常来响应中断。
import java.util.concurrent.*;
public class ExecutorServiceExample {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(2);
Runnable task = () -> {
try {
System.out.println("Task started");
Thread.sleep(5000); // 模拟长时间运行的任务
System.out.println("Task completed");
} catch (InterruptedException e) {
System.out.println("Task interrupted");
Thread.currentThread().interrupt(); // 重新设置中断状态
}
};
executorService.submit(task);
// 中断任务
executorService.shutdownNow();
try {
executorService.awaitTermination(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
ExecutorService
中的任务可以接受 InterruptedException
,任务可以通过捕获这个异常来响应中断。捕获 InterruptedException
后,通常需要重新设置中断状态,以便上层代码能够检测到中断。
领取专属 10元无门槛券
手把手带您无忧上云