Quando si consumano i valori da una coda in un ciclo infinito - quello che sarebbe più efficiente:Java BlockingQueue take() vs poll()
1) Blocco sulla coda fino a quando un valore è disponibile tramite take()
while (value = queue.take()) { doSomething(value); }
2) Dormire per n millisecondi e controllando se un articolo è disponibile
while (true) {
if ((value = queue.poll()) != null) { doSomething(value); }
Thread.sleep(1000);
}
secondo la mia esperienza, il thread è il modo migliore per produrre/consumare messaggi in blockingqueue. –
come può java avere un ciclo while con un'istruzione di assegnazione come condizione? – davidchoo12
"Efficiente" può essere un sacco di cose: bassa latenza, throughput più elevato, meno consumo di energia (mobile), ecc. Otterrete risposte più adatte se fornite più informazioni di base. – Renan