2012-12-14 19 views
11

Tại sao không có phương pháp isCancelled cho đối tượng java.util.Timer?Kiểm tra xem Bộ hẹn giờ Java có bị hủy không

Tôi muốn lên lịch một tác vụ nếu Bộ hẹn giờ không bị hủy và chạy trực tiếp (trên cùng một chuỗi) nếu nó đã bị hủy.

Là tùy chọn duy nhất để bắt số IllegalStateException có thể xảy ra nếu Bộ hẹn giờ đã bị hủy? (Cảm thấy sai khi bắt một số IllegalStateException).

Trả lời

14

Bạn chắc chắn muốn sử dụng Timer? Sử dụng ExecutorService thay vào đó, có isShutdown và có một số lợi ích khác để khởi động. Một khuyến cáo chung về Java 5 đã được thay thế Timer s với ExecutorService s.

Có giao diện ScheduledExecutorService dành riêng cho dịch vụ thực thi theo lịch. Nhanh chóng sử dụng một trong các phương pháp Executors.new....

+1

Điều này có nghĩa là lớp 'Hẹn giờ' bị giảm giá nhiều hay ít hơn? –

+3

Có, bạn có thể nói điều đó. Nếu nó phù hợp với hóa đơn của bạn, hãy sử dụng nó, nhưng nếu không, hãy chuyển sang 'ExecutorService' và không bao giờ nhìn lại. Suy nghĩ thứ hai, ngay cả lời khuyên đó cũng nguy hiểm: nếu bạn bắt đầu với 'Timer' và dự án của bạn phát triển, bạn có thể hối hận vì không bắt đầu với' ExecutorService'. –

+1

Không được chấp nhận? Không, nhưng không thích hợp cho rất nhiều nhiệm vụ. http://stackoverflow.com/questions/2213109/java-util-timer-is-it-deprecated –

Các vấn đề liên quan