2012-10-02 9 views
6

मैं एक नमूना वसंत निर्धारित कार्य को लागू किया है का उपयोग कर शेड्यूल किए गए कार्यों को रोकने के लिए,,कैसे इस प्रकार एक applicationContext साथ वसंत कार्य

<task:scheduled-tasks scheduler="myScheduler"> 
    <task:scheduled ref="cron" method="show" cron="0/10 * * * * ?"/> 
    <task:scheduled ref="cron" method="show2" cron="0/15 * * * * ?"/> 
</task:scheduled-tasks> 

<task:scheduler id="myScheduler" pool-size="10"/> 

मैं इस अनुसूची विधि रोक सकता है?

उत्तर

3

ThreadPoolTaskScheduler को अन्य बीन में इंजेक्ट करें, और shutdown() का आह्वान करें। यदि यह स्वीकार्य नहीं है, तो आप ध्वज स्वीकार करने के लिए cron बीन को कॉन्फ़िगर कर सकते हैं। उदाहरण के लिए:

public class Job() { 
    private final AtomicBoolean stop = new AtomicBoolean(false); 

    public void show() { 
     if (stop.get()) { 
      return; 
     } 
     ... 
    } 

    public void stop() { 
     stop.set(true); 
    } 
} 

ध्यान दें कि यह शेड्यूलर से नौकरी को नहीं हटाएगा। इसे रोकने का एकमात्र तरीका ScheduledFuture का संदर्भ प्राप्त करना होगा और cancel() पर कॉल करना होगा।

+0

हम्म, तुम मुझे लिखा जा सका एक उदाहरण विधि है जो मेरी taks अनुसूची विधि शो रोक दिया जाएगा()? – witek010

+0

@ उपयोगकर्ता1579075: किया गया। –

+0

ठीक है, तो मैं शेड्यूलर से नौकरी कैसे हटा सकता हूं? मुझे एक axample दे सकता है? – witek010

1

"स्टॉप" से आपका क्या मतलब है इस पर निर्भर करता है।

  1. व्यापार स्थिति बंद करो: एक व्यवसाय की स्थिति के परिणाम के रूप में बंद करो, तो आप उन परिस्थितियों अपने तरीके से मूल्यांकन करना चाहिए था और बस कोड निष्पादित नहीं। इस तरह आप रनटाइम पर अवांछित निष्पादन को रोक सकते हैं, परिणामस्वरूप स्थिति विफल (लॉगिंग, अधिसूचना इत्यादि) को संभालने के लिए अपना तर्क चलाएं।

  2. गैर व्यापार शर्त: गुण दायर करने के लिए chron अभिव्यक्ति बाह्यरूप या के रूप में मैं JVM में एक प्रणाली चर पसंद करते हैं। फिर आप किसी निष्पादन को रोकने के लिए केवल संपत्ति मान को 99 99 परिदृश्य में बदल सकते हैं।

सिस्टम परिवर्तनीय उदाहरण।

<task:scheduled-tasks scheduler="myScheduler"> 
<task:scheduled ref="cron" method="show" cron="#{systemProperties['chron1']}"/> 
<task:scheduled ref="cron" method="show2" cron="#{systemProperties['chron2']}"/> 

संबंधित मुद्दे