Зачем использовать poll () вместо take () в zookeeper WorkerSender - PullRequest
0 голосов
/ 05 ноября 2019

Я читал исходный код 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");
}
...