面试题答案
一键面试Executor接口主要功能
Executor
接口是Java并发包中提供的用于执行任务的基础接口。其主要功能是为任务的执行提供一种抽象机制,允许将任务的提交和执行解耦。它定义了一个方法 execute(Runnable task)
,该方法接收一个 Runnable
任务,并安排在一个适当的线程中执行此任务,线程的管理和调度由实现 Executor
接口的具体类负责,而无需任务提交者直接处理线程的创建、启动等细节,从而简化了并发编程。
常见应用场景
在Web应用程序中处理用户请求是常见场景。例如,一个电商网站接收用户的订单请求,将订单处理任务提交给 Executor
执行,这样主线程可以快速响应给用户,而订单处理任务在后台线程中执行,避免阻塞主线程影响用户体验。
实现方式
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class ExecutorExample {
public static void main(String[] args) {
// 创建一个单线程的Executor实例
Executor executor = Executors.newSingleThreadExecutor();
// 提交任务
executor.execute(() -> {
// 模拟订单处理任务
System.out.println("处理订单任务开始执行,线程名称:" + Thread.currentThread().getName());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("订单处理任务完成");
});
System.out.println("主线程继续执行,响应给用户");
}
}
在上述代码中,首先通过 Executors.newSingleThreadExecutor()
创建了一个 Executor
实例,该实例使用单个线程执行任务。然后通过 execute
方法提交了一个 Runnable
任务,该任务模拟了订单处理逻辑。主线程在提交任务后继续执行,不会等待订单处理任务完成,实现了任务的异步执行。