Java:如何按需唤醒线程?

Ale*_*987 6 java multithreading

假设我想创建一个基本上无限运行线程的对象.我希望线程在不需要他的情况下休眠,但是当需要完成某项工作时,它会唤醒线程 - 完成工作并重新进入休眠状态.我还希望将作业排队并按照它们到达的顺序执行.在cocoa/objective c中有一个NSOperationQueue.我想知道java是否有类似的东西.

你怎么看?

Pet*_*rey 4

我会使用 ExecutorService 像

private final ExecutorService executor = Executors.newSingleThreadExecutor();

public void task(final int arg) {
    executor.execute(new Runnable() {
        @Override
        public void run() {
            // perform task using `arg`
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

它有一个内置线程,当添加任务时该线程唤醒,当没有剩余任务时该线程休眠,这是一个用于队列任务的阻塞队列。