Tôi muốn trì hoãn làm điều gì đó, dọc theo các dòng thiết lập đồng hồ đếm ngược sẽ "làm một điều" sau một khoảng thời gian nhất định.Làm cách nào để lên lịch một tác vụ để chạy một lần?
Tôi muốn phần còn lại của chương trình của tôi để tiếp tục chạy trong khi tôi chờ đợi, vì vậy tôi đã cố gắng làm của riêng tôi Thread
có chứa một sự chậm trễ một phút:
public class Scratch {
private static boolean outOfTime = false;
public static void main(String[] args) {
Thread countdown = new Thread() {
@Override
public void run() {
try {
// wait a while
System.out.println("Starting one-minute countdown now...");
Thread.sleep(60 * 1000);
// do the thing
outOfTime = true;
System.out.println("Out of time!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
countdown.start();
while (!outOfTime) {
try {
Thread.sleep(1000);
System.out.println("do other stuff here");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Trong khi điều này làm việc, hơn-hay- ít hơn, nó có vẻ như có một cách tốt hơn để làm điều này.
Sau khi một số tìm kiếm, tôi tìm thấy một loạt các câu hỏi như thế này nhưng họ không thực sự giải quyết những gì tôi đang cố gắng để làm:
- How do I schedule a task to run at periodic intervals?
- How i can run my TimerTask everyday 2 PM
- How to run certain task every day at a particular time using ScheduledExecutorService?
- Java execute task with a number of retries and a timeout
Tôi không cần bất cứ điều gì phức tạp này ted; Tôi chỉ muốn làm một điều duy nhất sau một khoảng thời gian nhất định trong khi để phần còn lại của chương trình vẫn chạy.
Tôi nên làm thế nào để lên kế hoạch cho tác vụ một lần để "làm một điều"?
người thực thi được lên lịch này sẽ chạy một lần hoặc mỗi phút. Tôi muốn tôi chạy một lần và đi ra. – qualebs
@qualebs Trong ví dụ này, hành động sẽ chỉ chạy một lần. Thời gian được chuyển vào phương thức 'schedule()' là độ trễ trước khi hành động được chạy. – azurefrog