2010-10-17 15 views
5

मान लीजिए कि हमारे पास बहु प्रोसेसर मशीन और बहु ​​थ्रेडेड एप्लिकेशन हैं। यदि दो धागे को सिंक्रनाइज़ किए गए विधि तक पहुंच है और वे उसी समय निष्पादित हो गए हैं जो थ्रेड लॉक हो जाएगा? या क्या होगा?कौन सा धागा लॉक मिलेगा?

धन्यवाद

+0

मुझे लगता है, वीएम को एक सिक्का टॉस करना होगा। –

+0

http://stackoverflow.com/questions/3940164/java-waiting-on-synchronized-block-who-goes-first – Thilo

+0

को कुछ हद तक संबंधित है कि क्या इसका मतलब वीएम अगर दोनों धागे पाने की कोशिश एक धागा भूखा अनुमति दी है एक पाश में ताला लगाओ? –

उत्तर

2

बिंदु "एक ही समय में" के रूप में ऐसी कोई बात नहीं है। दोनों में से एक लॉक प्राप्त करेगा, लेकिन आपके पास कोई जानने का कोई तरीका नहीं है।

ऐसी कोई चीज़ नहीं है "एक ही समय में" क्योंकि, उदारता से बोलते हुए, एक ताला कुछ है जो विशेष रूप से एक समय में धागे को चुनता है और निष्पादित करता है।

यह स्वाभाविक रूप से एक शुद्ध monoprocessor प्रणाली है कि एक समय में एक अनुदेश निष्पादित कर सकते हैं में पूरा किया है। मल्टीप्रोसेसर सिस्टम पर आमतौर पर कुछ हार्डवेयर डिवाइस होते हैं जो प्रोसेसर को "लॉक" करते हैं ताकि उन्हें एक ही समय में निष्पादित करने से रोका जा सके।

+1

क्यों "एक ही समय में" नहीं? –

+0

यह "एक ही समय में" क्यों नहीं होगा। हम एक बहु-प्रोसेसर हार्डवेयर के बारे में बात कर रहे हैं ... – aioobe

+0

लेकिन लॉक को प्रबंधित करने वाला कोड किसी भी तरह से क्रमबद्ध होना चाहिए। – Thilo

9

व्यवहार किया जाएगा गैर नियतात्मक (जो है, या तो धागा ताला मिल सकता है), और यह निष्पादन के लिए निष्पादन से भिन्न हो सकते हैं। ऐसा इसलिए है क्योंकि यह विशिष्ट जेवीएम कार्यान्वयन, और आपके धागे के विशेष शेड्यूलिंग पर निर्भर करता है।

इस लेख के अनुसार JVM विनिर्देश निष्पक्षता पर कोई प्रतिबंध नहीं डालता:

निष्पक्षता
जावा स्मृति मॉडल धागे या रिक्तिपूर्व बहु सूत्रण के लिए किसी भी निष्पक्षता आवश्यकता को निर्दिष्ट नहीं करता है। एक धागा सीपीयू को दूसरे धागे में आत्मसमर्पण करने से मना कर सकता है और सिस्टम को डेडलॉक में फेंक सकता है। अन्य धागे को निष्पक्षता के नियम व्यक्तिगत जेवीएम कार्यान्वयन द्वारा परिभाषित किए जाते हैं।

है, जब तक आप ध्यान से अपने कार्यक्रम को सिंक्रनाइज़, एक धागा सैद्धांतिक रूप से अनुसूचक द्वारा भूखे हो सकती है।

+2

मुझे यह भी नहीं लगता कि उस स्तर पर "एक ही समय में" कोई भी होगा। एक थ्रेड लॉक प्राप्त करेगा, बस पहले वहां पहुंचने के आधार पर। एक सिक्का टॉस के लिए कोई ज़रूरत नहीं है। – Thilo

+0

हां, मैं सहमत हूं ... – aioobe

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