2011-05-24 7 views
12

मुझे भविष्य में कुछ काम करने की आवश्यकता है। मैं 2 तरीकों से यह कर सकते हैं:टाइमरटास्क और एक्जिक्यूटर्स के बीच अंतर। NewewcheduledThreadPool (1)

  1. एक TimerTask बनाएँ और निष्पादित timer.schedule(...);

  2. उपयोग Executors.newScheduledThreadPool(1):

    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 
    ScheduledFuture <?> scheduleHandle = scheduler.schedule(pushExternalRunnable, 
         runScheduleDate.getTime() - now.getTime(), TimeUnit.MILLISECONDS); 
    

क्या समय निर्धारण के इन 2 तरीके के बीच अंतर है भविष्य में काम करते हो?

+1

[जावा टाइमर बनाम एक्जिक्यूटर्स सेवा?] (Http://stackoverflow.com/questions/409932/java-timer-vs-executorservice) का संभावित डुप्लिकेट – marcolopes

उत्तर

27

सबसे बड़ा अंतर यह है कि टाइमर अपने सभी कार्यों को एक पृष्ठभूमि थ्रेड पर शेड्यूल करेगा। निष्पादक सेवा, दूसरी तरफ, कार्यों को चलाने के लिए नए थ्रेड (यदि आवश्यक हो) तैयार करेगी (आपके द्वारा निर्दिष्ट पूल के आकार तक, किस बिंदु पर कतारबद्ध किया जाएगा।)

+1

अच्छा, कभी नहीं जानता था। – asgs

15

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

शेड्यूल्डएक्सएटर भी भविष्य में भविष्य का उत्पादन करता है यदि आप प्रगति के साथ बातचीत करना चाहते हैं।

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