Tôi đã thử mọi thứ. Cái này quá How to stop the task scheduled in Java.util.Timer classCách dừng ngay lập tức nhiệm vụ được lên lịch trong lớp Java.util.Timer
Tôi có một nhiệm vụ mà thực hiện java.util.TimerTask
tôi gọi nhiệm vụ đó bằng 2 cách:
tôi lên lịch hẹn giờ như thế này:
hẹn giờ. lịch trình (timerTask, 60 * 1000);
đôi khi tôi cần làm việc đó để bắt đầu ngay lập tức và nó phải hủy TimerTask nếu có bất kỳ đó là làm việc
cancelCurrentWork(); timer.schedule (timerTask, 0);
thực hiện này không chỉ dừng lại công việc hiện tại: (tài liệu nói: Nếu nhiệm vụ đang chạy khi cuộc gọi này xảy ra, các nhiệm vụ sẽ chạy đến khi kết thúc, nhưng sẽ không bao giờ chạy lại)
Nhưng tôi cần nó để dừng lại.
public static void cancelCurrentwork() {
if (timerTask!= null) {
timerTask.cancel();
}
}
Việc triển khai này chỉ hủy bỏ bộ hẹn giờ nhưng hiện đang thực hiện nhiệm vụ hoàn thành.
public static void cancelCurrentwork() {
if (timer!= null) {
timer.cancel();
}
}
Có cách nào trong bộ đếm thời gian để STOP thực hiện taks hiện tại, giống như Thread.kill() hay gì đó không? Khi tôi cần nhiệm vụ đó để dừng tôi muốn nó mất tất cả dữ liệu của nó.
Và cách dừng công việc từ bên trong Tác vụ? Tôi có thể kiểm tra với boolean, nhưng phương pháp tôi nên gọi sau đó? this.cancel()? – vale4674
Và câu hỏi khác: có bất kỳ API nào giống như ScheduledExecutorService hay một cái gì đó như thế cho phép bạn STOP tác vụ không? – vale4674
Không, bạn chỉ cần trả về từ phương thức 'run'. – aioobe