Object当一些BlockingQueue人有一个项目给我时,我需要异步通知.
我已经在Javadoc和网络上搜索了一个预先制定的解决方案,然后我最终得到了一个(也许是天真的)我的解决方案,这里是:
interface QueueWaiterListener<T> {
public void itemAvailable(T item, Object cookie);
}
Run Code Online (Sandbox Code Playgroud)
和
class QueueWaiter<T> extends Thread {
protected final BlockingQueue<T> queue;
protected final QueueWaiterListener<T> listener;
protected final Object cookie;
public QueueWaiter(BlockingQueue<T> queue, QueueWaiterListener<T> listener, Object cookie) {
this.queue = queue;
this.listener = listener;
this.cookie = cookie;
}
public QueueWaiter(BlockingQueue<T> queue, QueueWaiterListener<T> listener) {
this.queue = queue;
this.listener = listener;
this.cookie = null;
}
@Override
public void run() {
while (!isInterrupted()) {
try {
T item = …Run Code Online (Sandbox Code Playgroud)