यदि आप रोकना चाहते हैं तो उपयोग करें java.util.concurrent.TimeUnit:
TimeUnit.SECONDS.sleep(1);
एक सेकंड के लिए सोने के लिए या
TimeUnit.MINUTES.sleep(1);
एक मिनट के लिए सोने के लिए।
जैसा कि यह एक लूप है, यह एक अंतर्निहित समस्या प्रस्तुत करता है - बहाव। हर बार जब आप कोड चलाते हैं और फिर सोते हैं तो आप दौड़ने से थोड़ा हटकर कहेंगे, हर सेकंड। यदि यह एक समस्या है तो उपयोग न करें sleep।
इसके अलावा, sleepबहुत लचीला नहीं है जब यह नियंत्रण में आता है।
किसी कार्य को हर सेकंड या एक सेकंड की देरी से चलाने के लिए, मैं दृढ़ता से या ScheduledExecutorServiceतो सिफारिश करूँगा ।scheduleAtFixedRatescheduleWithFixedDelay
उदाहरण के लिए, विधि को 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()।