यदि आप रोकना चाहते हैं तो उपयोग करें java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
एक सेकंड के लिए सोने के लिए या
TimeUnit.MINUTES.sleep(1);
एक मिनट के लिए सोने के लिए।
जैसा कि यह एक लूप है, यह एक अंतर्निहित समस्या प्रस्तुत करता है - बहाव। हर बार जब आप कोड चलाते हैं और फिर सोते हैं तो आप दौड़ने से थोड़ा हटकर कहेंगे, हर सेकंड। यदि यह एक समस्या है तो उपयोग न करें sleep
।
इसके अलावा, sleep
बहुत लचीला नहीं है जब यह नियंत्रण में आता है।
किसी कार्य को हर सेकंड या एक सेकंड की देरी से चलाने के लिए, मैं दृढ़ता से या ScheduledExecutorService
तो सिफारिश करूँगा ।scheduleAtFixedRate
scheduleWithFixedDelay
उदाहरण के लिए, विधि को myTask
हर सेकंड (जावा 8) चलाने के लिए :
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}
और जावा 7 में:
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
myTask();
}
}, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}
Thread.Sleep()
।