MST

星途 面试题库

面试题:Java单线程池任务执行顺序的基本原理

请阐述Java单线程池(`Executors.newSingleThreadExecutor()`)中任务的执行顺序是怎样的?在提交多个任务时,它是如何确保任务按特定顺序处理的?
10.4万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 任务执行顺序
    • Java单线程池Executors.newSingleThreadExecutor()创建的线程池中只有一个线程。任务的执行顺序是按照任务提交的顺序依次执行。也就是说,先提交的任务先执行,后提交的任务后执行。
  2. 确保任务按特定顺序处理的方式
    • 单线程池内部维护了一个阻塞队列(LinkedBlockingQueue),当调用submitexecute方法提交任务时,任务会被添加到这个队列中。
    • 由于只有一个线程在工作,这个线程会从阻塞队列中按顺序取出任务并执行。例如:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SingleThreadExecutorExample {
    public static void main(String[] args) {
        ExecutorService executor = Executors.newSingleThreadExecutor();
        executor.execute(() -> System.out.println("Task 1"));
        executor.execute(() -> System.out.println("Task 2"));
        executor.execute(() -> System.out.println("Task 3"));
        executor.shutdown();
    }
}
  • 在上述代码中,Task 1Task 2Task 3会按照提交顺序依次执行,输出结果依次为Task 1Task 2Task 3。这就确保了任务按提交顺序这种特定顺序处理。