मैं वास्तव में धागे को मारने का एक आसान तरीका ढूंढ रहा हूं इससे कोई फर्क नहीं पड़ता कि धागा कहाँ चल रहा है। लेकिन इंटरनेट में अधिकांश समाधान मुझे थ्रेड के निष्पादन को नियंत्रित करने के लिए बुलियन ध्वज का उपयोग करने के लिए इंगित करते हैं, अगर मैं थ्रेड को रोकना चाहता हूं तो बूलियन चर को झूठी पर सेट करें।जावा थ्रेड.स्टॉप() कैसे काम करते हैं?
लेकिन क्या होगा यदि चलने योग्य कार्य एक लंबा रैखिक कार्य है, जिसका अर्थ है कि कार्य दोहराना नहीं है? उस स्थिति में, कार्य के पूरे ब्लॉक को कवर करने के लिए 'थोड़ी देर' लूप बनाना इतना आसान नहीं है।
यह थ्रेड.स्टॉप का उपयोग करने के लिए वास्तव में बहुत ही आकर्षक है लेकिन चेतावनी "बहिष्कृत" उपयोग करने के लिए काफी खतरनाक प्रतीत होता है। मैं इस लेख Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated?
के माध्यम से पढ़ा है, लेकिन मैं
नहीं समझ सकता वस्तुओं पहले से इन पर नज़र रखता है में एक असंगत स्थिति थे द्वारा संरक्षित के किसी भी अन्य धागे अब एक में इन वस्तुओं को देख सकते हैं, तो असंगत स्थिति। ऐसी वस्तुओं को क्षतिग्रस्त कहा जाता है।
क्या "असंगत स्थिति" क्या मतलब है? अगर कोई इस बारे में समझा सकता है तो मैं सराहना करता हूं।
मैं देखने के एक अधिक निचले स्तर के लिए मेरे सवाल का विस्तार करना चाहते हैं, का कहना है कि JVM (शायद विधानसभा भाषा को समान रूप से), हो सकता है यह जावा बयान, कुछ छोटे निर्देश में विभाजित किया जाएगा move i ; add i ; get i into memory 0x0101
की तरह (उदाहरण के लिए में i = i + 1;
यह एक है चलो उदाहरण! मैं पूरी तरह से असेंबली भाषा नहीं जानता!)
अब, अगर हम थ्रेड.स्टॉप कहते हैं, तो वास्तव में यह कहां रुक जाएगा? क्या एक पूर्ण जावा कथन के बाद थ्रेड रुक जाएगा, या "भाषा इकट्ठा" के बीच में हो सकता है? यदि उत्तर दूसरा है, तो यह कारण हो सकता है कि हमने कहा कि
ऐसी वस्तुओं को क्षतिग्रस्त माना जाता है।
?
ठीक है, मेरा प्रश्न उलझन में है, उम्मीद है कि कोई समझ और समझा सकता है। अग्रिम में धन्यवाद।
संबंधित प्रश्न http://stackoverflow.com/questions/7291914/java-stop-safety-a-thread-not-using-while-and-boolean-flag –