Nếu nó có sẵn cho bạn, thì thật khó để nghĩ ra lý do không sử dụng khung thực thi Java 5. Gọi điện thoại:
ScheduledExecutorService ex = Executors.newSingleThreadScheduledExecutor();
sẽ cung cấp cho bạn một ScheduledExecutorService
chức năng tương tự Timer
(nghĩa là nó sẽ đơn luồng) nhưng quyền truy cập của nó có thể mở rộng hơn một chút (dưới mui xe, nó sử dụng các cấu trúc đồng thời thay vì đồng bộ hóa hoàn toàn như với Timer
lớp). Sử dụng một ScheduledExecutorService
cũng cung cấp cho bạn những lợi thế như:
- Bạn có thể tùy chỉnh nó nếu cần (xem lớp
newScheduledThreadPoolExecutor()
hoặc ScheduledThreadPoolExecutor
lớp)
- Việc thực thi 'một lần' có thể trả về kết quả
Về những lý do duy nhất để gắn bó với Timer
tôi có thể nghĩ đến là:
- Nó có sẵn Java 5
- Một lớp tương tự được cung cấp trong J2ME, có thể giúp chuyển ứng dụng của bạn dễ dàng hơn (nhưng sẽ không quá khó để thêm một lớp trừu tượng phổ biến trong trường hợp này)