मेरे पास एक निर्धारित कार्य है (निश्चित देरी निष्पादन में चल रहा है), इस तरह से शुरू किया गया:ScheduledExecutorService शेड्यूल किए गए कार्य को पुनरारंभ करने का सही तरीका क्या है?
executoreService.scheduleWithFixedDelay(repeatingThread, 0, numOfSeconds, TimeUnit.SECONDS);
चक्र की हर शुरुआत पर, मैं सेटिंग्स फ़ाइल में बदलाव की जांच करता हूं, और फिर मैं कार्य को पुनरारंभ करना चाहता हूं। सेटिंग्स फ़ाइल में अंतराल की लंबाई भी होती है (उपरोक्त कोड में numOfSeconds
)।
वर्तमान में, मैं कार्य को पुनरारंभ करने के लिए निम्न कोड का उपयोग कर रहा हूं:
executoreService.shutdownNow();
try {
while(!executoreService.awaitTermination(5, TimeUnit.SECONDS)){
logger.debug("awaiting termintation");
}
} catch (InterruptedException e) {
logger.debug("interrupted, continuing", e);
}
// initialize startup parameters
init();
// start the main scheduled timer
executoreService.scheduleWithFixedDelay(repeatingThread, 0, numOfSeconds, TimeUnit.SECONDS);
मुझे इन API कॉल के बारे में निश्चित नहीं है। कार्य को पुनरारंभ करने के लिए अनुशंसित तरीका क्या है (संभवतः एक नई देरी के साथ)?
यह विचार करने के लिए कुछ है, लेकिन सेटिंग को बदलने के किसी भी मामले को कवर करने में कुछ आसान करना आसान है। यानी, सेटिंग फ़ाइल में कोई भी परिवर्तन * देरी भी बदल सकता है। तो यह जांचने के बजाय कि देरी बदल दी गई थी और फिर एक काम करें, और यदि यह कुछ और नहीं था, तो मैं किसी भी मामले में बस फिर से शुरू करना चाहता हूं। – Ovesh