Java Worker线程等待

时间:2012-09-15 17:05:24

标签: java multithreading worker

我有一个在后台工作的线程,但它并不总是有工作要做。我希望它等待主线程传递数据,然后继续工作。

起初我认为这是wait()notify()的用途,但它似乎相反。

我该怎么做?

2 个答案:

答案 0 :(得分:6)

请参阅my comment

  

听起来你想要一个BlockingQueue - 这是生产者 - 消费者问题的一个非常常见的要求。尽量不要重新发明轮子;-)

存在多个BlockingQueue实施,例如有界ArrayBlockingQueue,无界LinkedBlockingQueue,移交SynchronousQueue,甚至是PriorityBlockingQueue。所有BlockingDequeTransferQueue也是BlockingQueue s; - )

答案 1 :(得分:6)

我建议您使用ExecutorService。我将队列与线程池结合起来。

您可以向后台提交在后台执行的任务,如果需要,您可以获得结果。

ExecutorService service = Executors.newWhateverPool();
service.submit(new Runnable() {  your task here });