Java 使用单个计时器的多个计划调用
我正在阅读JavaSDK1.3中的计时器 它在POSA第2卷的活动对象模式中提到如下 JDK1.3引入了用于执行基于计时器的任务的mechansim 同时在类java.util.Timer和java.util.TimerTask中。 当任务的计划执行时间发生时,它是 执行。调度调用在clinets线程中执行, 而任务本身是在计时器拥有的线程中执行的 对象计时器内部任务队列受锁保护,因为 上面列出的两个线程同时对其进行操作 任务队列作为优先级队列实现,以便下一个 可以有效地识别要过期的TimerTask。计时器线程 只需等待,直到到期 我的问题是Java 使用单个计时器的多个计划调用,java,timer,Java,Timer,我正在阅读JavaSDK1.3中的计时器 它在POSA第2卷的活动对象模式中提到如下 JDK1.3引入了用于执行基于计时器的任务的mechansim 同时在类java.util.Timer和java.util.TimerTask中。 当任务的计划执行时间发生时,它是 执行。调度调用在clinets线程中执行, 而任务本身是在计时器拥有的线程中执行的 对象计时器内部任务队列受锁保护,因为 上面列出的两个线程同时对其进行操作 任务队列作为优先级队列实现,以便下一个 可以有效地识别要过期的TimerT
感谢您的时间和帮助。如果您不必使用SDK 1.3,您可以使用Java 5.0,它引入了ScheduledExecutorService,使计时器成为多余的IMHO ScheduledExecutorService已经存在9年多了,也许是时候升级了 顺便说一句,1.3是生命的终结,在太阳正式宣布生命终结日期之前。它是古老的,除非你喜欢历史课,否则我建议你活在现在 顺便说一句,Java5.0和Java6都是生命的终结,Java7将于明年宣布生命的终结日期 如果我是你的话,我会看看Java7或Java8,忽略任何超过几年的东西,因为在互联网上有很多不好的或过时的实践,它们不会得到更新
如果你喜欢了解坏的或过时的做法,玫瑰印度网站是我发现的最好的收藏。;) 为什么要阅读SDK 1.3?我的问题是,正如作者在SDK 1.3中提到的,这里也提到了
public class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.format("Time's up!%n");
timer.cancel(); //Terminate the timer thread
}
}
public static void main(String args[]) {
new Reminder(5);
System.out.format("Task scheduled.%n");
}
}