ठीक देता है, मुझे पता है कि यह कैसे धागे वास्तव में काम की probabblly MZ बुरा समझ है, लेकिन जब तक किसी को मदद करता है मुझे समझने मेरा मानना है कि है कि यह एक बग :)थ्रेड getName() गलत नाम
मेरी मुख्य वर्ग में है और इसकी मुख्य() विधि मेरे पास है:
public static void main(String args[]){
StoneBucket stoneBucket = new StoneBucket();
StonePutter spRunnable = new StonePutter(stoneBucket);
StoneThrower stRunnable = new StoneThrower(stoneBucket);
StoneThrower stRunnable2 = new StoneThrower(stoneBucket);
//Create the Threads that will take the Runnables as arguments
Thread puttingThread = new Thread(spRunnable);
Thread throwingThread = new Thread(stRunnable);
Thread throwingThread2 = new Thread(stRunnable);
puttingThread.setName("Putter");
throwingThread.setName("Thrower 1");
throwingThread2.setName("Thrower 2");
[...]
और फिर मेरी StoneThrower कक्षा में जब मैं संकलन और इस कोड को मैं हो रही है चलाने मैं
public class StoneThrower implements Runnable{
private StoneBucket sb;
private String name;
public StoneThrower(StoneBucket _sb){
this.sb = _sb;
}
public void run(){
name = Thread.currentThread().getName();
System.out.println("T::"+name+" started...");
int count = 0;
while(true){
[...]
है:
तो, मेरे सवाल यही वजह है कि इन धागे के दोनों currentThread().getName()
लिए एक ही नाम वापसी करते हैं? जब उन्हें बनाया गया था तो उन्हें threadX.setName("XXX")
के माध्यम से नाम सौंपा गया था और उन रननेबल threadX.start()
पर कॉल करके शुरू किए गए हैं ... क्या कोई मुझे यह स्पष्ट कर सकता है?
संपादित करें: मैंने सही उत्तर स्वीकार कर लिया क्योंकि stRunnable2 के लिए stRunnable बदलना व्यवहार की अपेक्षा की जाती है। असली सवाल यह है कि ऐसा क्यों होता है। मैं दो धागे बनाते हैं और उन्हें अलग से शुरू करते हैं। यह कैसे सकारात्मक है कि रन() विधि (जिसे थ्रेड के निर्माण के समय कहा जाता है) गलत नाम देता है?
आप कोड की बिट पोस्ट कर सकते हैं जहां धागे शुरू कर रहे हैं:
यहाँ अपने परिदृश्य है? – PearsonArtPhoto