工作线程只在队列中有东西时才消耗cpu

jma*_*erx 0 java queue multithreading

这是我想要做的.

我想拥有一个具有队列并启动线程的对象.另一个线程可以通过执行object.addWork(work)来推送到该队列;

这会将工作推入队列并在线程休眠时唤醒它.然后,线程对队列中的每个对象执行工作,直到队列为空.

一旦队列为空并且不再剩余工作,该线程就会休眠并需要通过再次添加到队列来唤醒.

是否有一种线程安全的方式来制作这样的对象?

tal*_*lex 5

你基本上想要Executors.newSingleThreadExecutor做什么

class YouNameIt{
    private ExecutorService executor;

    public void start(){
        executor = Executors.newSingleThreadExecutor();
    }

    public void put(Object o){
        executor.submit(new Runnable() {
            @Override
            public void run() {
                process(o);
            }
        });
    }

    private void process(Object o) {
        //Put your processing here
    }

    public void stop(){
        executor.shutdown();
    }
}
Run Code Online (Sandbox Code Playgroud)