"हॅलो, अमिगो! तुम्हाला कबूल करावे लागेल की एलीची कॅन्सल कल्पना उत्तम होती."
"हो."
"वास्तविक, थ्रेड क्लासमध्ये असेच काहीतरी अस्तित्वात आहे . फक्त व्हेरिएबलला isCancel असे म्हटले जात नाही . त्याला isInterrupt म्हणतात . आणि थ्रेड थांबवण्यासाठी वापरण्यात येणारी पद्धत cancel() नाही . ती interrupt() आहे ."
"खरंच?"
"हो. ते पहा:"
कोड | वर्णन |
---|---|
|
कारण एकाच क्लॉक ऑब्जेक्टवर अनेक थ्रेड्स रन मेथड कॉल करू शकतात, आम्हाला सध्याच्या थ्रेडसाठी थ्रेड ऑब्जेक्ट मिळेल .
जोपर्यंत सध्याच्या थ्रेडचे isInterrupt व्हेरिएबल चुकीचे आहे तोपर्यंत क्लॉक क्लास कन्सोलवर सेकंदातून एकदा "टिक" हा शब्द लिहितो . जेव्हा isInterrupt सत्य होते , तेव्हा रन पद्धत समाप्त होते. |
|
मुख्य धागा एक लहान धागा (घड्याळ) सुरू करतो जो कायमचा चालू असावा.
10 सेकंद प्रतीक्षा करा आणि व्यत्यय पद्धतीवर कॉल करून कार्य रद्द करा . मुख्य धागा त्याचे काम पूर्ण करतो. घड्याळाचा धागा त्याचे काम संपवतो. |
शिवाय, स्लीप पद्धत, जी लोकांना रन पद्धतीमध्ये अंतहीन लूपमध्ये वापरण्यास आवडते , ती स्वयंचलितपणे isInterrupt व्हेरिएबल तपासते . जर एखादा थ्रेड स्लीप मेथडला कॉल करत असेल, तर पद्धत प्रथम तपासते की त्या थ्रेडसाठी इंटरप्ट खरे आहे की नाही. ते खरे असल्यास, पद्धत झोपणार नाही. त्याऐवजी, ते InterruptedException अपवाद टाकते.
"अपवाद का टाकायचा? isCancel() ऐवजी isInterrupted() लूपमध्ये टाकणे चांगले नाही का?"
" प्रथम , रन मेथडमध्ये नेहमी लूप नसतो. या पद्धतीमध्ये इतर पद्धतींवरील काही डझन कॉल्स असू शकतात. नंतर तुम्हाला प्रत्येक मेथड कॉल करण्यापूर्वी एक isInterrupted चेक जोडावा लागेल."
" दुसरे , काही पद्धती ज्यामध्ये बर्याच वेगवेगळ्या कृतींचा समावेश असतो ते अंमलात आणण्यासाठी खूप वेळ लागू शकतो."
" तिसरे , अपवाद फेकणे isInterrupted check बदलत नाही. हे फक्त एक सोयीस्कर जोड आहे. फेकलेला अपवाद तुम्हाला कॉल स्टॅकला रन मेथडवर परत त्वरीत अनवाइंड करू देतो . "
" चौथी , झोपेची पद्धत खूप वापरली जाते. हे दिसून येते की, ही उपयुक्त पद्धत एका गर्भित तपासणीद्वारे वर्धित केली जाते जी कमी उपयुक्त नाही. असे आहे की जणू कोणीही विशेषत: चेक जोडला नाही, परंतु तो आहे. जेव्हा हे खूप मौल्यवान आहे तुम्ही दुसऱ्याचा कोड वापरत आहात आणि तुम्ही स्वतः चेक जोडू शकत नाही."
" पाचवा , अतिरिक्त तपासणीमुळे कार्यप्रदर्शन खराब होत नाही. स्लीप पद्धतीला कॉल करणे म्हणजे थ्रेड काहीही करत नसावा (झोपण्याशिवाय), त्यामुळे अतिरिक्त काम कोणालाही त्रास देत नाही."
"ते गंभीर युक्तिवाद आहेत."
"आणि, शेवटी , हे आहे: तुमची रन पद्धत दुसर्याच्या कोडला कॉल करू शकते—कोड ज्यामध्ये तुम्हाला प्रवेश नाही (स्रोत कोड आणि/किंवा कोड बदलण्याचे अधिकार). त्यात कदाचित व्यत्यय नसलेल्या तपासण्या नसतील आणि ते कदाचित वापरू शकेल. " प्रयत्न करा ... पकड (अपवाद ई) " सर्व अपवाद पकडण्यासाठी."
धागा बंद होईल याची खात्री कोणीही देऊ शकत नाही. फक्त एक धागा स्वतःला थांबवू शकतो.
GO TO FULL VERSION