Thread.stop() इतना खतरनाक क्यों है? http://download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html
यह सलाह दी जाती Thread.interrupted उपयोग करने के लिए क्यों किया जाता है() के बजाय:
समस्याओं यहाँ विस्तार से वर्णन किया जाता है?
जब यह एक बिंदु तक पहुँच जाता है, जब यह जानता है कि यह सुरक्षित है ऐसा करने के लिए क्योंकि Thread.interrupt()
बाधा प्रतिक्रिया की लक्ष्य धागा सुविधा देता है।
मुझे पता है कि स्टॉप को बहिष्कृत किया गया है। क्या दूसरी चीज इसे असुरक्षित बनाती है?
उपरोक्त लिंक देखें।
क्या कोई ऐसी जगह है जहां मैं स्टॉप विधि का उपयोग कर सकता हूं? यदि ऐसा है तो मुझे एक उदाहरण दें।
सिद्धांत रूप में, यदि आप जानते थे कि धागा आप रोक गया:
- कभी डाटा संरचनाओं अन्य धागे के साथ साझा अद्यतन नहीं किया,
- इंतजार/सूचित या उच्च स्तर का उपयोग नहीं किया सिंक्रनाइज़ेशन कक्षाएं, या उन पर निर्भर कक्षाएं,
- और संभवतः कुछ अन्य चीजें।
उदाहरण के लिए, मुझे लगता है कि इस सूत्र stop()
करने के लिए सुरक्षित होगा:
new Thread(new Runnable(){
public void run(){for (long l = 0; l > 0; l++){}}).start();
हालांकि, ज्यादातर मामलों में यह है भी मुश्किल अगर stop()
होगा वास्तव में बुला यह पता लगाने की विश्लेषण करने के लिए सुरक्षित रहना। उदाहरण के लिए, आपको थ्रेड का उपयोग करने वाले प्रत्येक संभावित बिट कोड (कोर और तृतीय-पक्ष पुस्तकालयों सहित) का विश्लेषण करना होगा। इसलिए यह डिफ़ॉल्ट रूप से असुरक्षित बनाता है।
स्रोत
2011-03-07 11:55:09
क्या आपने http://download.oracle.com/javase/6/docs/technotes/guides/concurrency/threadPrimitiveDeprecation.html को थ्रेड.स्टॉप javadocs से लिंक किया था? –
+1, मेरा दिमाग ऊपर था जब मेरा दिमाग किसी पर विचार नहीं कर रहा था :) – adarshr
यह आलेख सहायक हो सकता है: [आप इंटरप्टेड एक्सेप्शन के साथ क्या करते हैं?] (Http://www.yegor256.com/2015/10/20/ interrupted-upgrade.html) – yegor256