संभव डुप्लिकेट:
Are Thread.sleep(0) and Thread.yield() statements equivalent?जावा में Thread.yield() और Thread.sleep (0) के बीच क्या अंतर है?
मेरी समझ में, दोनों Thread.yield() और Thread.Sleep (0) सीपीयू rejudge जो धागा कुछ समय निर्धारण एल्गोरिदम द्वारा चलता है करने के लिए करना चाहिए ।
अंतर है:
Thread.yield() अन्य धागे के कार्यकारी मौका देने के लिए है, लेकिन Thread.Sleep (0) नहीं है, यह सिर्फ सीपीयू है कि आप को पुनर्व्यवस्थित करना चाहिए बता दूँगा होगा वर्तमान धागे सहित कार्यकारी धागे।
थ्रेड.इल्ड() केवल एक सलाह है जिसका अर्थ है कि इसे बिल्कुल स्वीकार नहीं किया जा सकता है, लेकिन Thread.sleep (0) मजबूती से पुनर्गठन करेगा।
क्या ऊपर दिए गए निष्कर्ष सही हैं?
चूंकि ये विधि बहुत कार्यान्वयन पर निर्भर हैं, यह कहना मुश्किल है। आपको इन तरीकों के व्यवहार पर भरोसा नहीं करना चाहिए। उदाहरण के लिए यदि आपके पास एक लूप है जो थ्रेड.इल्ड() करता है तो यह समय के CPU 99% + को छोड़ नहीं देगा। ओएस के आधार पर Thread.sleep (0) 0.5 से 2 एमएस तक सो सकता है, सीपीयू को छोड़कर, लेकिन यह गारनेटेड नहीं है। –