1) संभव है? प्रभाव क्या हैं?
हाँ यह संभव है।
निहितार्थ यह है कि रननेबल में कोई भी राज्य (संभावित रूप से) सभी धागे द्वारा साझा किया जाता है, और उस स्थिति तक पहुंच/अपडेट को ठीक से सिंक्रनाइज़ करने की आवश्यकता होती है।
2) अगर मैं थ्रेड.sleep (0) को कॉल करता हूं; कक्षा MyRunnable में, दोनों धागे सो जाएगा क्योंकि वे एक ही वस्तु हैं, या धागा इकाई पूरी तरह से वस्तु से अलग है?
नहीं, वे नहीं करेंगे।
थ्रेड Runnable
से तर्कसंगत रूप से अलग है। Thread.sleep()
पर कॉल करने से Runnable
और अन्य थ्रेड सीधे इसे प्रभावित नहीं कर सकते हैं। (यह अन्य थ्रेड परोक्ष रूप से प्रभाव सकता है, उदाहरण के लिए अगर एक धागा सोता है, जबकि यह Runnable के आदिम लॉक रोक रखा है, और अन्य धागे प्रगति करने के लिए ताला प्राप्त करने के लिए की जरूरत है।)
3) वहाँ कभी एक कारण होगा ऐसा करने के लिए, यदि नहीं, तो कृपया उपरोक्त दो प्रश्नों का उत्तर दें, क्योंकि मुझे नहीं लगता कि मैं अभी तक थ्रेड तंत्र को पूरी तरह से समझता हूं?
आप पराक्रम ऐसा करने अगर कोई धागा विशेष Runnable
के साथ जुड़े राज्य है और आप अंतरिक्ष ओवरहेड्स, या Runnable
आरंभ की ओवरहेड्स कम करने के लिए करना चाहता था। लेकिन इस तरह के उपयोग-मामलों अभ्यास में दुर्लभ हैं।
वास्तविक दुनिया के उपयोग के अधिकांश मामलों में-प्रत्येक थ्रेड को एक अलग Runnable
उदाहरण की आवश्यकता होती है।
स्रोत
2012-03-24 04:39:21
आप इसे स्वयं का परीक्षण क्यों नहीं करते और देखते हैं? –
धागे के साथ क्या चल रहा है, यह जानने की कोशिश कर रहा है, केवल परीक्षण के माध्यम से, कभी-कभी थ्रेड के तरीके के कारण असंगत परिणाम हो सकते हैं। मैं इस मामले में, मेरे कार्यक्रम की मजबूती के लिए मजबूती नहीं छोड़ना चाहता हूं। – rubixibuc