我如何用Java做计时器?

时间:2009-04-21 05:49:09

标签: java timer

我正在Java中实现x-modem protocol。如果我收到数据包时出现超时,则必须发送negative acknowledgment。我必须启动一个计时器,当时间到了,然后我向发送者发送一条消息,要求从头开始传输文件。

但我不知道如何用Java做定时器;我可以看一些示例代码吗?谢谢。

2 个答案:

答案 0 :(得分:1)

这里有一些我理解你的问题的示例代码:

final Timer t = new Timer();
t.schedule(new TimerTask() {
        /**
         * {@inheritDoc}
         */
        @Override
        public void run() {
            // Do what you want
        }
    }, delay);

 if (gotResponse) t.cancel();

其中delay是您在Timer执行任务之前要等待的毫秒数。

答案 1 :(得分:1)

查看java.util.concurrent包,特别是ScheduledThreadPoolExecutor类。

java.util.Timer的问题在于它安排一个后台线程来处理定时任务,如果任务本身需要一段时间运行,你的任务可以排队(详见here)< / p>

这些都不提供任何实时保证。

这个book非常擅长解释java.util.concurrent包的用法