Я читал исходный код zookeeper и обнаружил, что при получении сообщения ToSend
из очереди в FastLeaderElection.WorkerSender
они используют poll()
вместо take()
. Почему?
Является ли poll()
лучше?
Просматривая историю мерзавцев, я обнаружил, что она начала использовать take()
, поэтому должна была быть причина для перехода на poll()
.
public void run() {
while (!stop) {
try {
ToSend m = sendqueue.poll(3000, TimeUnit.MILLISECONDS);
if (m == null) {
continue;
}
process(m);
} catch (InterruptedException e) {
break;
}
}
LOG.info("WorkerSender is down");
}