जब एक अनंत लूप में एक कतार से मान लेने वाली - क्या और अधिक कुशल होगा:जावा BlockingQueue ले() बनाम चुनाव()
1) एक मूल्य तक कतार अवरोधित ले माध्यम से उपलब्ध है()
while (value = queue.take()) { doSomething(value); }
2) n मिलीसेकंड के लिए सो रही है और अगर एक आइटम उपलब्ध
while (true) {
if ((value = queue.poll()) != null) { doSomething(value); }
Thread.sleep(1000);
}
मेरे अनुभव के अनुसार, थ्रेड ब्लॉकिंग्यूयू में संदेश का उत्पादन/उपभोग करने का सबसे अच्छा तरीका है। –
जावा के पास शर्त के रूप में असाइनमेंट स्टेटमेंट के साथ थोड़ी देर लूप कैसे हो सकती है? – davidchoo12
"कुशल" बहुत सी चीजें हो सकती हैं: कम विलंबता, उच्च थ्रूपुट, कम ऊर्जा उपभोग करने वाला (मोबाइल) इत्यादि। यदि आप अधिक पृष्ठभूमि जानकारी प्रदान करते हैं तो आपको बेहतर अनुकूल उत्तर मिलेंगे। एक अच्छी तरह से समझाया सरल उत्तर के लिए – Renan