2010-07-18 10 views

उत्तर

5

नहीं, थ्रेड अभी भी RUNNABLE राज्य में होगा। ध्यान दें कि RUNNABLE इंगित करता है कि एक थ्रेड चलाने के लिए उपलब्ध है और या तो वर्तमान में चल रहा है या इसकी बारी का इंतजार कर रहा है। Thread.STATE वर्तमान में निष्पादित थ्रेड और चलाने के लिए तैयार धागे के बीच अंतर नहीं करता है, वे RUNNABLE दोनों हैं।

एक धागा केवल WAITING राज्य है जब या तो wait(), join() या LockSupport.park() बुलाया गया है में प्रवेश करेंगे।

Thread.yield() विधि को कॉल करके वर्तमान में चल रहे थ्रेड स्वेच्छा से CPU समय का टुकड़ा छोड़ रहा है। यह धागा फिर वापस तैयार राज्य में जाने से चला जाता है।

+0

@krock: तो यह रननेबल है हालांकि यह थ्रेड-शेड्यूलर को एक अलग धागे को सक्रिय करने के लिए एक अवसर प्रदान करता है? – Max

+0

@ मैक्स, हां 'उपज() 'प्रणाली के लिए एक अधिसूचना है कि इसे अन्य धागे को चलाने का मौका देना चाहिए। यदि ऐसा करने के लिए और कुछ नहीं है, तो धागा बस निष्पादन जारी रख सकता है। – krock

+0

रननबल, रनिंग नहीं। यदि शेड्यूल इसे एक टुकड़ा देता है तो यह दौड़ सकता है। इसके विपरीत एक थ्रेड कॉलिंग() इस समय नहीं चल सकती है (यानी चलाने योग्य नहीं है)। – EricSchaefer

संबंधित मुद्दे