"हॅलो, अमिगो! येथे एक मनोरंजक प्रश्न आहे जो तुम्हाला एकतर आधीच पडला आहे किंवा लवकरच तुम्हाला येईल. तुम्ही चालू असलेला धागा कसा थांबवाल? "
समजा वापरकर्ता प्रोग्रामला "इंटरनेटवरून फाइल डाउनलोड" करण्यास सांगतो. मुख्य थ्रेड या कामासाठी एक वेगळा चाइल्ड थ्रेड तयार करतो, आणि त्यास एक ऑब्जेक्ट पास करतो ज्याच्या रन पद्धतीमध्ये फाइल डाउनलोड करण्यासाठी सर्व आवश्यक क्रिया समाविष्ट असतात.
पण अचानक वापरकर्त्याचा विचार बदलतो. तो फाइल डाउनलोड करू इच्छित नाही. एखादे काम रद्द करून धागा कसा थांबवायचा?
"हो, सांग कसं?"
" आम्ही करू शकत नाही. हे सर्वात सामान्य आणि सर्वात योग्य उत्तर आहे. तुम्ही धागा थांबवू शकत नाही. फक्त तो स्वतःच थांबवू शकतो. "
परंतु तुम्ही थ्रेडला सिग्नल पाठवू शकता, काही प्रकारे ते सांगू शकता की काम यापुढे करण्याची आवश्यकता नाही आणि ते संपले पाहिजे. जसा मुख्य धागा मुख्य पद्धतीतून परत येण्याने संपतो, तसाच चाइल्ड थ्रेड रन मेथडमधून परत आल्यावर संपतो.
"ते करण्याचा सर्वोत्तम मार्ग कोणता आहे?"
"तुम्ही काही व्हेरिएबल जोडू शकता, जसे की बुलियन . जर ते खरे असेल , तर थ्रेड चालेल. जर ते खोटे असेल , तर थ्रेड संपुष्टात आला पाहिजे. उदाहरणार्थ, याप्रमाणे:"
कोड | वर्णन |
---|---|
|
क्लॉक क्लास कन्सोलवर सेकंदातून एकदा कायमचे "टिक" लिहितो ClockManager.isClockRun असत्य असल्यास, रन पद्धत समाप्त होते. |
|
मुख्य थ्रेड चाइल्ड थ्रेड (घड्याळ) सुरू करतो जो कायमचा चालू असावा
10 सेकंद थांबा आणि घड्याळाला समाप्त होण्यासाठी सिग्नल द्या. मुख्य धागा त्याचे काम पूर्ण करतो. घड्याळाचा धागा त्याचे काम संपवतो. |
"आपल्याकडे अनेक धागे असतील तर काय?"
"प्रत्येक थ्रेडसाठी असे व्हेरिएबल असणे चांगले आहे. ते थेट वर्गात जोडणे सर्वात सोयीचे आहे. तुम्ही तेथे बुलियन isRun व्हेरिएबल जोडू शकता. तथापि, बुलियन isCancel व्हेरिएबल जोडणे चांगले आहे जे कार्य असल्यास खरे होईल. रद्द केले."
कोड | वर्णन |
---|---|
|
जोपर्यंत isCancel खोटे आहे तोपर्यंत क्लॉक क्लास कन्सोलवर सेकंदातून एकदा «टिक» शब्द लिहितो .
जेव्हा isCancel सत्य होते, तेव्हा रन पद्धत समाप्त होते. |
|
मुख्य थ्रेड चाइल्ड थ्रेड (घड्याळ) सुरू करतो जो कायमचा चालू असावा
10 सेकंद थांबा आणि रद्द पद्धतीवर कॉल करून कार्य रद्द करा. मुख्य धागा त्याचे काम पूर्ण करतो. घड्याळाचा धागा त्याचे काम संपवतो. |
"मी हे लक्षात ठेवेन. धन्यवाद, एली."
GO TO FULL VERSION