2012-01-16 18 views
6

मैं जावा 6.व्यवहार

में ScheduledExecutorService पर scheduleAtFixedRate() विधि से संबंधित प्रश्न है [संपादित: 1.6 के लिए जावाडोक कि 1.5 के लिए अधिक से अधिक पूरा हो गया है। नीचे टिप्पणी देखें]

यह देखते हुए कि:

  • ScheduledExecutorService पूल
  • निर्धारित दर में एन = 1 धागे से निर्माण किया है टी सेकंड की अवधि है
  • कोई प्रारंभिक देरी

क्या इस मामले में होता है (बार, निरपेक्ष होने के लिए वास्तविक समय अर्थ में नहीं होती हैं):

  • समय टी में, सेवा एक Runnable कार्य, "task1"
  • समय 2T पर, task1 अभी तक पूरा नहीं किया है की शुरूआत की, और सेवा आग

सेवा कोई भी कार्य करने की गारंटी दी है निर्धारित है इनमें से?

  • (एक) 2T पर, एक Runnable कार्य, "task2" शुरू (याद एन = 1)
  • (ख) task1 जब तक ब्लॉक समाप्त हो गया है
  • (ग) इस समय छोड़ सकते हैं और पुन: प्रयास करें 3T पर
  • (घ) व्यवहार

या कुछ और अपरिभाषित है? क्या एन> 1 अगर उत्तर बदलता है?

+0

मैं जावा 1.5 डॉक (http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html#scheduleAtFixedRate%28java.lang पर देख रहा था। पुन: प्रयोज्य, % 20long,% 20long,% 20java.util.concurrent.TimeUnit% 29), जिसका उत्तर नहीं है। इस सवाल को लिखते समय, मैंने 1.6 डॉक से इसे बारीकी से देखे बिना जोड़ा। जैसा कि आप देखेंगे, 1.6 का उत्तर स्पष्ट है। –

उत्तर

6

जवाब

(ख) ब्लॉक जब तक task1

समाप्त हो गया है और उस (task2 भी प्रस्तुत नहीं किया जा सकता है) निष्पादक के धागे की संख्या की परवाह किए बिना है।

दस्तावेज़ का कहना है:

इस कार्य के किसी भी निष्पादन इसकी अवधि से अधिक समय लेता, तो उसके बाद फांसी शुरू हो सकता है देर से, लेकिन समवर्ती पर अमल नहीं होगा

(BTW, वहाँ है, क्योंकि कोई आरंभिक देरी, "task1" अभी के रूप में doc`ed kickoff देगा:

फांसी initialDelay

के बाद

शुरू होगा)।

1

प्रलेखन कि आप लिंक से ...

इस कार्य के किसी भी निष्पादन इसकी अवधि से अधिक समय लेता, तो उसके बाद फांसी देर से शुरू हो सकता है, लेकिन समवर्ती पर अमल नहीं होंगे।

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