这是我想要做的。
我希望有一个具有队列并启动线程的对象。另一个线程可以通过执行object.addWork(work);
来推送到该队列这会将工作推入队列并在线程休眠时唤醒它。然后,线程对队列中的每个对象执行工作,直到队列为空。
一旦队列为空并且不再有剩余工作,该线程就会休眠并需要再次添加到队列中来唤醒。
是否有一种线程安全的方式来制作这样的对象?
答案 0 :(得分: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();
}
}