New*_*ser 5 java multithreading jms
这是我的问题,我正在使用JMS将一些消息发送到队列。编写程序的方式是,在上一条消息发送后的30秒内,将有一条消息发送到队列。如果在30秒内没有发送任何消息,则该消息为最后一条消息,我应该开始使用队列中的消息。
我最初的想法是创建一个带有任务的计时器(从队列中接收消息),当创建新消息时,该方法被调用,任务等待30秒。如果再次调用该方法,则意味着又出现了一条消息,因此必须重新计划任务。
这是我编写的代码:
public void startTimer() {
Timer t = new Timer();
try {
t.schedule(task, timeDelay);
} catch (Exception e) {
t.cancel();
t = new Timer();
t.schedule(task, timeDelay);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试安排一个计时器,如果有一个预定的任务,那么我要取消该计时器,创建一个新的计时器并安排一个新任务。
我收到错误消息为Task already scheduled or cancelled。
任何改进的想法或建议或解决方案都是最欢迎的。
您不能一次使用TimerTask多个Timer。
您需要创建一个TimerTask要执行的新实例:
t.cancel();
t = new Timer();
TimerTask newTask = new MyTimerTask(); // new instance
t.schedule(newTask, timeDelay);
Run Code Online (Sandbox Code Playgroud)