我有两个线程。线程A正在从队列中取出一些元素,而线程B正在向队列中添加一些元素。
当队列为空时,我希望线程A能够进入休眠状态。
当线程B向队列中添加元素时,它应该确保线程A正在工作。在Java中怎么做呢?
我有两个线程。线程A正在从队列中取出一些元素,而线程B正在向队列中添加一些元素。
当队列为空时,我希望线程A能够进入休眠状态。
当线程B向队列中添加元素时,它应该确保线程A正在工作。在Java中怎么做呢?
使用 BlockingQueue
,它是:
一个支持等待队列变为非空以获取元素和等待队列中有空间可用时存储元素的
Queue
。
认真对待,不要试图在这里重新发明轮子。
(如果你必须使用 wait/notify,请阅读这个教程。但请节省自己的痛苦!)
以下是一些细节:
import java.concurrent.Executors;
import java.concurrent.ExecutorService;
...
ExecutorService executor = Executors.newFixedThreadPool(someNumberOfThreads);
...
executor.execute(someObjectThatImplementsRunnable);
...
executor.shutdownNow();