एक निर्धारित कार्य निष्पादित किया जा रहा है या तो है या का इन्तजार कर रहे है।
यदि कार्य निष्पादित होने का इंतजार कर रहा है, तो future.cancel()
इसे निष्पादित होने से रोक देगा (दोनों रद्द (सत्य)/रद्द (झूठा))।
यदि कार्य पहले ही निष्पादित किया जा रहा है, future.cancel(false)
का कोई प्रभाव नहीं पड़ेगा। future.cancel(true)
उस कार्य को निष्पादित करने वाले थ्रेड को बाधित करेगा। क्या इसका कोई प्रभाव आपके लिए पर होगा, जो उस कार्य को लागू करेगा। एक कार्य कार्यान्वयन के आधार पर बाधा का जवाब दे सकता है या नहीं।
अपना कार्य रद्दीकरण के लिए उत्तरदायी बनाने के लिए, आपको doSomething()
लागू करना होगा ताकि यह बाधा का जवाब दे सके।
यह करने के लिए मूल रूप से दो तरह से कर रहे हैं: अपने तर्क में
1.Check रुकावट झंडा
public void doSomething(){
stuff();
//Don't use Thread.interrupt()
if(Thread.currentThread().isInterrupted()){
// We have an interruption request, possibly a cancel request
//Stop doing what you are doing and terminate.
return;
}
doLongRunningStuff();
}
आप कभी-कभी रुकावट ध्वज के लिए जांच करना चाहिए, और अगर बाधित, बंद करो तुम क्या कर रहे और वापस। चेक के लिए Thread.isInterrupted() और Thread.interrupt() का उपयोग करना सुनिश्चित करें। बाधित अपवाद पर
2.Act
public void doSomething(){
try{
stuff();
}catch(InterruptedException e){
// We have an interruption request, possibly a cancel request
// First, preserve Interrupted Status because InterruptedException clears the
// interrupted flag
Thread.currentThread.interrupt();
// Now stop doing your task and terminate
return;
}
doLongRunningStuff();
}
आप किसी भी विधि का InterruptedException फेंकता है, तो रोक तुम क्या कर और उसे समाप्त कर जब एक फेंक दिया जाता है सुनिश्चित करें।
एक बार जब आप इस तरीके से अपनी विधियों को लागू कर लेते हैं, तो आप किसी चल रहे कार्य को निष्पादित करने के लिए future.cancel (true) को कॉल कर सकते हैं।
स्रोत
2010-05-25 13:39:38
क्या कुछ चल रहा है कुछ()? –