2011-01-14 10 views
6

मैं नीचे दिए गए कार्यक्रम में आउटपुट के रूप में 100 प्रिंट करना चाहता था।100 प्रिंट करने के लिए क्या करना है?

मुझे उत्तर के रूप में 0 मिल रहा है।

class s extends Thread{ 
    int j=0; 
     public void run() { 
      try{Thread.sleep(5000);} 
      catch(Exception e){} 
      j=100; 
     } 
     public static void main(String args[]) 
     { 
      s t1=new s(); 
      t1.start(); 
      System.out.println(t1.j); 
     } 

} 
+0

इसके अलावा करने के लिए धागा t1 शामिल होने, और मुझे ठीक कर लें मैं गलत गुरु हूँ, बल्कि "एस" वर्ग 'चर का उपयोग करने से सीधे आपको जे के मान को मुद्रित करने के लिए एक एक्सेसर विधि शामिल करनी चाहिए। –

+0

@ द ऑक्स: यह अच्छा अभ्यास होगा। यहां अधिक महत्वपूर्ण है 'j'' (या इसे 'अस्थिर' घोषित करें) को सिंक्रनाइज़ करना। यह संभव है (यद्यपि संभावना नहीं है) कि धागे के धागे को लिखने के बाद भी मुख्य धागा 'j' का पुराना मान देख सकता है। यह सच है कि क्यों एक अच्छी व्याख्या के लिए ब्रायन गोएट्ज़ की पुस्तक "जावा कंसुरेंसी इन प्रैक्टिस" देखें। –

उत्तर

5

आप मुख्य रूप से टी 1 में शामिल हो गए हैं। तो, माता-पिता thread(main()) बच्चे के धागे को पूरा होने तक प्रतीक्षा करेंगे।

13

आप finish..I को Thread के लिए प्रतीक्षा करने की जरूरत है आप के लिए join के लिए एक कॉल, जो ब्लॉक और Threadj का मूल्य को देखकर पहले पूर्ण होने की प्रतीक्षा करेंगे जोड़ लिया है:

class s extends Thread{ 
    int j=0; 
    public void run() { 
     try{ Thread.sleep(5000); } catch(Exception e){} 
     j = 100; 
    } 

    public static void main(String args[]) throws InterruptedException { 
     s t1=new s(); 
     t1.start(); 
     t1.join() ; // Wait for t1 to finish 
     System.out.println(t1.j); 
    } 
} 
+1

+1 या, रन() विधि पर सिंक्रनाइज़ ब्लॉक बनाएं! ~ –

+0

सिंक्रनाइज़ किए गए ब्लॉक को क्या बदलेगा? – gabuzo

+0

आपको वास्तव में 'j' तक पहुंच सिंक्रनाइज़ करने की आवश्यकता है, या इसे' अस्थिर 'घोषित करने की आवश्यकता है। आदिम प्रकारों पर भी एक स्टेल पढ़ना संभव है। ब्रायन गोएट्ज़ समझा सकता है कि मैं इससे बेहतर क्यों कर सकता हूं। फिर भी, ओपी को सही विचार देने के लिए +1। –

2

t1 जुड़ें

t1.join 

ताकि मुख्य थ्रेड इंतजार करेंगे

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