java 常⽤的线程池模式SingleThreadExecutor


只有一个工作线程在执行任务。
当提交一个新任务时,如果线程正在运行,新任务就会被放入任务队列中等待执行。
使用场景:适用于需要保证任务顺序执行的应用程序,如任务队列、生产者消费者模型等。
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  
  
public class SingleThreadExecutorExample {  
    public static void main(String[] args) {  
        // 创建一个单线程的线程池  
        ExecutorService executorService = Executors.newSingleThreadExecutor();  
  
        // 提交10个任务给线程池执行  
        for (int i = 0; i < 10; i++) {  
            Runnable worker = new WorkerThread("" + i);  
            executorService.execute(worker);  
        }  
  
        // 关闭线程池  
        executorService.shutdown();  
    }  
}  
  
class WorkerThread implements Runnable {  
    private String command;  
  
    public WorkerThread(String command) {  
        this.command = command;  
    }  
  
    @Override  
    public void run() {  
        System.out.println(Thread.currentThread().getName() + "开始处理:" + command);  
        processCommand();  
        System.out.println(Thread.currentThread().getName() + "结束处理:" + command);  
    }  
  
    private void processCommand() {  
        try {  
            Thread.sleep(2000);  
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
    }  
}

在这个例子中,我们创建了一个单线程的线程池,这意味着所有任务都会顺序执行,一个接一个地执行。因此,这个例子中,任务会按照顺序被执行,每个任务在前一个任务完成后才会开始执行。最后,我们关闭了线程池。需要注意的是,由于只有一个线程可用,如果任务需要长时间运行,可能会导致其他任务等待时间过长。

你可能感兴趣的:(java,开发语言)