2013-07-02 8 views
5

मेरे पास एक कक्षा है जो थ्रेड फैली हुई है।जावा में पहले से शुरू किया गया है या नहीं, यह जांचने के लिए कैसे करें?

मैं किसी बिंदु पर धागा शुरू करूंगा।

कुछ समय बाद मुझे यह जांचने की ज़रूरत है कि वह धागा पहले ही शुरू हो चुका है या नहीं?

ताकि मैं उस विशेष बिंदु पर धागा शुरू कर सकूं।

मेरे धागा वर्ग होगा,

public class BasicChatListener extends Thread{ 

    public void run(){ 


    } 

} 

मैं जानता हूँ कि एक BasicChatListener वर्ग के विशेष धागे या नहीं चल रहा है की जरूरत है? क्योंकि मेरे पास मेरे आवेदन में कई धागे पहले से चल रहे हैं।

हमारे स्टैक सदस्य मेरी सहायता कैसे करेंगे।

+0

आपने निर्दिष्ट 'BasicChatListener' का संदर्भ रखा है, है ना? – johnchen902

+0

ऐसा लगता है कि आपको केवल एक श्रोता शुरू करने की आवश्यकता है। क्या आप 'BasicChatListener' का उदाहरण बना सकते हैं और इसे एक ही समय में शुरू कर सकते हैं? –

+0

@ विग्नेश वीनो लेकिन विशेष रूप से जांच के लिए 'बेसिक कैट लिस्टर' धागा को कैसे संदर्भित किया जाए? यहां तक ​​कि मेरे आवेदन में भी कई धागे हो सकते हैं? मैंने यही पूछा है। –

उत्तर

6

आप Thread.getState() का उपयोग कर सकते हैं और संबंधित states का उपयोग कर सकते हैं।

ध्यान दें कि जब तक आप इस स्थिति को पढ़ते हैं यह बदल सकता है, लेकिन आप रुचि के कुछ निर्धारित करने में सक्षम हो सकते हैं। उपलब्ध संक्रमणों के लिए this state diagram देखें।

+0

+1 सहायक लिंक-स्टेट आरेख –

+0

विशेष रूप से चेक के लिए 'BasicChatListener' थ्रेड को कैसे संदर्भित किया जाए? –

+0

मॉनिटर, सेमफोर या किसी अन्य साझा ऑब्जेक्ट का उपयोग करना शायद बेहतर है क्योंकि थ्रेड स्टेटस सीमित हैं। चलने का मतलब आपके इच्छित डिग्री से शुरू नहीं हो सकता है। –

1

आप .. isAlive साथ यह जाँच कर सकते हैं

isAlive परीक्षण करता है, तो इस सूत्र जीवित है। अगर यह शुरू हो गया है और अभी तक मर नहीं गया है तो एक धागा जीवित है।

+0

+1 मेरे लिए, isAlive का उपयोग getState को कॉल करने से स्पष्ट है और यह जांचना है कि राज्य नया नहीं है। –

1

मैं इस कोड Thread.isAlive()

1

का उपयोग आप GetState()

इस सूत्र के राज्य रिटर्न उपयोग कर सकते हैं। इस विधि को सिस्टम स्थिति की निगरानी में उपयोग के लिए डिज़ाइन किया गया है, सिंक्रनाइज़ेशन नियंत्रण के लिए नहीं।

या बूलियन isAlive()

टेस्ट करता है, तो इस सूत्र जीवित है। अगर यह शुरू हो गया है और अभी तक मर नहीं गया है तो एक धागा जीवित है।

1

Thread.isAlive() यह निर्धारित कर सकता है कि कोई थ्रेड चल रहा है या नहीं।

टेस्ट यदि यह धागा जिंदा है। अगर यह शुरू हो गया है और अभी तक मर नहीं गया है तो एक धागा जीवित है।

Thread#getState(); धागे की सटीक स्थिति वापस कर सकते हैं।

इस धागे की स्थिति देता है। इस विधि को सिस्टम स्थिति की निगरानी में उपयोग के लिए डिज़ाइन किया गया है, सिंक्रनाइज़ेशन नियंत्रण के लिए नहीं।

3

उपयोग या तो Thread#isAlive()

if (Thread.currentThread().isAlive()) 

JavaDoc का कहना है:

टेस्ट करता है, तो इस सूत्र जीवित है। अगर यह शुरू हो गया है और अभी तक मर नहीं गया है तो एक धागा जीवित है।

या, का उपयोग Thread#getState() रूप

Thread.State currState = Thread.currentThread().getState(); 
if (currState != Thread.State.NEW && currState != Thread.State.TERMINATED) 

JavaDoc का कहना है:

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

+0

नीचे वोट क्यों? :( –

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

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