Tag: peek

java BlockingQueue没有阻塞偷看?

我有一个阻塞队列的对象。 我想写一个阻塞的线程,直到队列中有一个对象。 与BlockingQueue.take()提供的function类似。 但是,由于我不知道我是否能够成功处理对象,我想只是peek()而不是删除对象。 我想删除该对象只有我能够成功处理它。 所以,我想要一个阻塞的peek()函数。 目前,peek()只是在队列为空时根据javadoc返回。 我错过了什么吗? 有没有其他方法来实现此function? 编辑: 如果我只使用线程安全队列而偷看和睡觉的任何想法? public void run() { while (!__exit) { while (__queue.size() != 0) { Object o = __queue.peek(); if (o != null) { if (consume(o) == true) { __queue.remove(); } else { Thread.sleep(10000); //need to backoff (60s) and try again } } } Thread.sleep(1000); //wait 1s […]