java:组合多线程/单线程任务队列

Jas*_*n S 3 java concurrency multithreading

我喜欢ExecutorService系列类/接口.我不必担心线程; 我接受一个ExecutorService实例并使用它来安排任务,如果我想使用8线程或16线程池,那么,很好,我根本不用担心,它只是发生取决于如何ExecutorService已设置.欢呼!

但是,如果我的某些任务需要按顺序执行,我该怎么办?理想情况下,我会要求ExecutorService让我在一个线程上安排这些任务,但似乎没有任何方法可以这样做.

编辑:任务未提前知道,它们是由各种事件不规律地生成的无限系列任务(想想随机/未知到达过程:例如点击Geiger计数器或按键事件).

dan*_*ben 6

你可以编写一个实现,Runnable它需要一些任务并按顺序执行它们.

就像是:

public class SerialRunner implements Runnable {
    private List<Runnable> tasks;

    public SerialRunner(List<Runnable> tasks) {
        this.tasks = tasks;
    }

    public void run() {
        for (Runnable task: tasks) {
            task.run();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)