मैंने बयान पर सभी जावा documentation स्कैन किए बिना किसी प्रश्न के उत्तर के लिए इस प्रश्न का उत्तर खोज रहे हैं।सिंक्रनाइज़ रिहाई ऑर्डर
कहें कि मेरे पास thread1
, thread2
, thread3
एक ही समय में निम्नलिखित कोड चलाने की कोशिश कर रहा है।
synchronized(lockObj) {
doSomething();
}
thread1
पहले doSomething()
, thread2
हो जाता है तो thread3
जो ब्लॉक और synchronized
बयान पर इंतजार करेंगे मान लें।
प्रश्न
- जब
thread1
रिलीज ताला, जो धागे की पहली जारी किया जाएगा? - सामान्य आदेश नियम क्या है जो लॉक जारी करते समय लागू होता है?
क्यों बस (के रूप में एक [ArrayBlockingQueue] http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ArrayBlockingQueue.html का उपयोग नहीं एक BlockingQueue इस तरह के) या कुछ समान है? या मैं आपका प्रश्न समझ नहीं रहा हूं। –
मैं इसे एक ही अवधि में जोड़ दूंगा: मॉनिटर पर प्रतीक्षा करने वाले थ्रेड प्रतीक्षा में सूचीबद्ध होते हैं [** सेट **] (http://docs.oracle.com/javase/specs/jls/se7/html/jls -17.html # jls-17.2)। –
@ होवरक्राफ्टफुलऑफल्स मेरा भ्रम वास्तव में इस कोड को पढ़ने के बाद शुरू हुआ http://www.tutorialspoint.com/java/java_thread_synchronization.htm मैंने हमेशा ताले सोचा है जहां एक फीफो तरीके से प्रबंधित किया गया है लेकिन स्पष्ट रूप से लिंक के लिए – GETah