2011-07-12 15 views
16

से थ्रेड ऑब्जेक्ट का संदर्भ प्राप्त करें यदि मैं उस थ्रेड से जुड़े आईडी को जानता हूं तो मैं रनिंग थ्रेड के संदर्भ कैसे प्राप्त कर सकता हूं?अपने आईडी

उदा।

long threadID = 12342; 
Thread thread = (What goes here?) getThreadFromId(threadID); //I know this is totally made up 

उत्तर

11

आप 2 तरीके यह करना है। दोनों काफी सरल हैं:

  • पुराना तरीका: आप पाश में Thread.currentThread().getGroup() ..getParent() में पहुंच सकते जड़ धागा समूह मिलता है। और enumerate(Thread[])

  • नया (धीमा हालांकि) पर कॉल करें। for (Thread t : Thread.getAllStackTraces().keySet()) if (t.getId()==id)...

पहली विधि एक छोटी सी समस्या है कि ThreadGroup.destroy() में एक बग के कारण, एक ThreadGroup कुछ भी गणना नहीं हो सकता है।

दूसरा धीमा है और सुरक्षा सुरक्षा है।

-1

आपको में निम्न कोड का उपयोग कर सकते प्राप्त करने के लिए थ्रेड नाम

ThreadMXBean threadMB = ManagementFactory.getThreadMXBean(); 
long threadIds[] = threadMB.findDeadlockedThreads(); 
for (long id : threadIds) { 
    System.out.println("The deadLock Thread id is : " + id 
          + " > " 
          +  
    threadMB.getThreadInfo(id).getThreadName()); 
} 
(जैसे मुझे लगता है कि गतिरोध में हैं धागे के नाम प्राप्त करना चाहते हैं के लिए)