2013-04-10 8 views
5

यदि मैं सिंक्रनाइज़ किए गए ब्लॉक के अंदर एक नया धागा बना देता हूं, तो क्या थ्रेड निष्पादन पूरा होने तक ब्लॉक लॉक रहेगा? यदि नहीं, तो यह कब तक बंद रहेगा?एक सिंक्रनाइज़ ब्लॉक के अंदर नए धागे का निष्पादन

String sLine; 
onClick(String line){ 
    synchronized (lock) { 
     sLine = line; 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       doProcessing(Sline);  
     }).start(); 
    } 
} 
+0

डुप्लिकेट - http://stackoverflow.com/questions/5295065/java-threads-and-synchronized-blocks?rq=1 – rajesh

+0

@rajesh no। आपके द्वारा संदर्भित प्रश्न इस प्रश्न के दायरे को शामिल करता है, लेकिन यह एक अलग सवाल है। – giulio

उत्तर

7

यह केवल बनाए रखा गया होगा यदि कोड join() डी नए बनाए गए धागे के साथ, इस प्रकार इसे समाप्त करने का इंतजार कर रहा है। चूंकि कोई start() पर कॉल करने के बाद लॉक जारी किया जाएगा।

+0

तो उपर्युक्त मामले में यह ब्लॉक तब तक लॉक हो जाएगा जब तक कि नया धागा नहीं बनाया गया हो? तो यह रन() पूरा होने तक इंतजार नहीं करेगा? – Sunny

+0

@ सुनी, हाँ, यह सही है। – hmjd

0

कोई धागा अलग जीवन नहीं है। सिंक्रनाइज़ ब्लॉक केवल उपरोक्त मामले में धागे के प्रारंभ बिंदु तक अवरुद्ध हो जाएगा।

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