विजुअलवीएम - थ्रेड स्टेट्स


86

किसी ने मुझे के बीच अंतर के बारे में समझाएं कर सकते हैं Sleeping, Wait, Park, और MonitorVisualVM में धागा राज्यों।

यहां छवि विवरण दर्ज करें

यह वही है जो मैंने पाया है:

Running: धागा अभी भी चल रहा है।
Sleeping: थ्रेड सो रहा है (विधि उपज () को थ्रेड ऑब्जेक्ट पर कहा गया था)
Wait: थ्रेड को म्यूटेक्स या एक अवरोध द्वारा अवरुद्ध किया गया था, और लॉक को जारी करने के लिए एक और थ्रेड का इंतजार कर रहा है
Park: पार्क किए गए थ्रेड्स को तब तक निलंबित कर दिया जाता है जब तक उन्हें परमिट नहीं दिया जाता है। थ्रेड को अनपार्क करना आमतौर पर थ्रेड ऑब्जेक्ट पर कॉलिंग विधि unpark () द्वारा किया जाता है
Monitor: थ्रेड्स फिर से शुरू होने के लिए शर्त बनने की प्रतीक्षा कर रहे हैं

मैं जो समझ नहीं पा रहा हूं वह है राजकीय पार्क, वास्तव में धागे पर क्या शक है? मैं उस कोड का कैसे पता लगा सकता हूं जिसने थ्रेड को इसके निष्पादन को निलंबित कर दिया है?

क्या कोई इस संबंध में मेरा मार्गदर्शन कर सकता है।

धन्यवाद।

जवाबों:


53

मुझे एक बहुत अच्छा चित्र मिला, जो बहुत कुछ बताता है जिसकी आपको आवश्यकता है / जानना चाहते हैं।

यहां छवि विवरण दर्ज करें

  1. नया

यदि आप थ्रेड क्लास का एक उदाहरण बनाते हैं लेकिन प्रारंभ () विधि के मंगलाचरण से पहले थ्रेड नए राज्य में है।

  1. runnable

थ्रेड प्रारंभ () विधि के मंगलाचरण के बाद रन करने योग्य स्थिति में है, लेकिन थ्रेड शेड्यूलर ने इसे रनिंग थ्रेड के रूप में नहीं चुना है।

  1. चल रहा है

यदि थ्रेड शेड्यूलर ने इसे चुना है, तो थ्रेड चालू स्थिति में है।

  1. समय का इंतजार किया

समयबद्ध प्रतीक्षा एक निर्दिष्ट प्रतीक्षा समय के साथ प्रतीक्षा कर रहे थ्रेड के लिए एक थ्रेड स्थिति है। निर्दिष्ट प्रतीक्षा समय के साथ निम्न विधियों में से एक को कॉल करने के कारण समयबद्ध प्रतीक्षा स्थिति में एक धागा है:

  • Thread.Sleep (sleeptime)
  • Object.wait (timeout)
  • Thread.join (timeout)
  • LockSupport.parkNanos (timeout)
  • LockSupport.parkUntil (timeout)
  1. गैर-परिवर्तनीय (अवरुद्ध)

यह वह स्थिति है जब धागा अभी भी जीवित है, लेकिन वर्तमान में चलाने के लिए योग्य नहीं है।

  1. समाप्त

थ्रेड समाप्त या मृत अवस्था में है जब इसकी रन () विधि बाहर निकलती है।

उम्मीद है कि यह आपके प्रश्न का उत्तर देता है :)।

पार्किंग:

जब तक परमिट उपलब्ध न हो, थ्रेड शेड्यूलिंग उद्देश्यों के लिए वर्तमान थ्रेड को अक्षम करता है।

यदि आप इसे इस तरह से कॉल करना चाहते हैं तो थ्रेड्स को पार्क या सस्पेंड किया जा रहा है क्योंकि इसे निष्पादित करने की अनुमति नहीं है। एक बार अनुमति मिल जाने के बाद थ्रेड को अनपेक्षित और निष्पादित किया जाएगा।

LockSupport के परमिट थ्रेड्स से जुड़े होते हैं (यानी परमिट एक विशेष धागे को दिया जाता है) और जमा नहीं होता है (यानी प्रति धागा केवल एक परमिट हो सकता है, जब धागा परमिट का उपभोग करता है, तो यह गायब हो जाता है)।


आपके प्रतिक्रिया के लिए धन्येवाद। मैं भी इससे गुजर गया लेकिन किसी तरह मेरा सवाल अभी भी अनुत्तरित है। क्या आप कृपया मेरे प्रश्न से गुजर सकते हैं; मैंने इसे अपडेट किया है। विशेष रूप से पार्क राज्य के उत्तर की तलाश में हूँ।
अली शाह अहमद

अपडेट के लिए फिर से धन्यवाद। तो पार्क की स्थिति में, क्या धागा अनुसूचित होने के लिए इंतजार कर रहा है या यह किसी शर्त पर इंतजार कर रहा है?
अली शाह अहमद

@ अलीशाह थ्रेड निष्पादित करने के लिए अनुमति (शर्त) की प्रतीक्षा कर रहा है - यदि यह शर्त कुछ निश्चित अवधि के लिए पूरी नहीं होती है और समय-सीमा समाप्त हो जाती है और थ्रेड समाप्त हो जाता है - पीएस। देरी से जवाब देने के लिए क्षमा करें haha
Maciej Cygan

39

VisualVM जावा UI स्थिति (जैसा कि @ Maciej के उत्तर में वर्णित है) को अपने UI में प्रस्तुत किया गया है।

BLOCKED -> Monitor
RUNNABLE -> Running
WAITING/TIMED_WAITING -> Sleeping/Park/Wait (see below)
TERMINATED/NEW -> Zombie

Sleepingऔर Park(समयबद्ध) प्रतीक्षा के विशिष्ट मामले हैं:

Sleeping: specifically waiting in Thread.sleep().  
Park:     specifically waiting in sun.misc.Unsafe.park() (presumably via LockSupport).

(मानचित्रण में किया जाता है ThreadMXBeanDataManager.java।)

जावा थ्रेड स्टेट की एक संक्षिप्त (और गैर-आधिकारिक) चर्चा यहां पाई जा सकती है

जोड़ें के लिए:

यह भी ध्यान देने योग्य है कि जेवीएम में कॉल करने के लिए देशी तरीकों से कॉल करने वाले थ्रेड्स दिखाई देते हैं RUNNABLE, और इसलिए विजुअलवीएम द्वारा Running(और 100% सीपीयू के रूप में) की सूचना दी जाती है ।


2
यह सही उत्तर होना चाहिए। सवाल JVisualVM थ्रेड राज्यों के बारे में था न कि JVM थ्रेड राज्यों के बारे में।
डिजिटल_इनफिनिटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.