我正在Java中实现x-modem protocol。如果我收到数据包时出现超时,则必须发送negative acknowledgment。我必须启动一个计时器,当时间到了,然后我向发送者发送一条消息,要求从头开始传输文件。
但我不知道如何用Java做定时器;我可以看一些示例代码吗?谢谢。
答案 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包的用法