scheduleAtFixedRate
और scheduleWithFixedDelay
ScheduledExecutorService के तरीकों के बीच मुख्य अंतर क्या है?शेड्यूलएटफ़िक्स्ड रेट बनाम अनुसूची WithFixedDelay
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("scheduleAtFixedRate: " + new Date());
}
}, 1, 3L , SECONDS);
scheduler.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
System.out.println("scheduleWithFixedDelay: " + new Date());
}
}, 1, 3L , SECONDS);
वे एक ही समय में सटीक प्रिंट करते हैं, ऐसा लगता है कि वे एक ही अंतराल पर निष्पादित होते हैं।
क्या fixedRate परिदृश्य में क्या होता है मदद कर सकता है अगर यह अधिक लेता है कॉफी बनाने के लिए एक घंटे से अधिक? –
@ ब्रेटवेंडरविन: मेरा मानना है कि प्रश्न में निष्पादक पर निर्भर करता है। यह * समय पर निर्धारित * होगा - लेकिन क्या * निष्पादित * इस निष्पादक पर धागा उपलब्ध है या नहीं, इस पर निर्भर करता है। मेरा सुझाव है कि आप यह देखने के लिए प्रयोग करें कि यह विभिन्न परिदृश्यों में कैसे काम करता है। –
@ ब्रेटवेंडरविन [दस्तावेज़ीकरण] से [https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledExecutorService.html#scheduleAtFixedRate-java.lang.Runnable-long-long-java .util.concurrent.TimeUnit-), "यदि इस कार्य का कोई निष्पादन इसकी अवधि से अधिक समय लेता है, तो बाद के निष्पादन देर से शुरू हो सकते हैं, लेकिन समवर्ती रूप से निष्पादित नहीं होंगे।" दूसरे शब्दों में, एक अनुरूप कार्यान्वयन अगले एक को समाप्त होने तक अगले व्यक्ति को निष्पादित करने की अनुमति नहीं देगा। –