2011-02-24 23 views
12

अनुसूचितExecutorService में निश्चित अंतराल पर रनने योग्य कक्षाओं को आमंत्रित करने के लिए शेड्यूलएटफ़िक्स्डरेट (रननेबल कमांड, लम्बी प्रारंभिक डेले, लंबी अवधि, टाइम यूनिट यूनिट) जैसी विधियां हैं। मैं चाहता हूं कि मेरा थ्रेड निष्पादन के बाद कुछ मूल्य लौटाए। तो मैंने कॉल करने योग्य इंटरफ़ेस लागू किया। मुझे नियमित अंतराल पर अपने कॉल योग्य वर्ग का आह्वान करने के लिए समकक्ष विधि नहीं मिल सका। क्या इसे लागू करने का कोई और तरीका है? यदि यह कार्यक्षमता जावा द्वारा प्रदान नहीं की जाती है, तो उस निर्णय के पीछे तर्कसंगत क्या है? कृपया मुझे बताओ। धन्यवाद।निश्चित अंतराल पर कॉल करने योग्य कार्यान्वयन को कॉल करने के लिए जावा में अनुसूचितExecutorService का उपयोग कैसे करें?

उत्तर

10

आप आवधिक निष्पादन के लिए Callable शेड्यूल नहीं कर सकते हैं क्योंकि यह स्पष्ट नहीं है कि इस तरह के निष्पादन से परिणाम कैसे वापस किया जाए।

आप (उदाहरण के लिए, एक कतार में एक परिणाम रखने) परिणाम लौटने के लिए अपने स्वयं के दृष्टिकोण है, तो आप Runnable में Callable लपेट और अपने दृष्टिकोण को लागू कर सकते हैं:

final BlockingQueue<Result> q = new ArrayBlockingQueue<Result>(); 
final Callable<Result> action = ...; 

s.scheduleAtFixedRate(new Runnable() { 
    public void run() { 
     q.put(action.call()); 
    } 
}, ...); 
संबंधित मुद्दे