【发布时间】:2013-12-13 02:22:42
【问题描述】:
这是我的问题,我正在使用 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);
}
}
我正在尝试安排一个计时器,如果已经安排了一个现有任务,那么我将取消该计时器,创建一个新计时器并安排一个新任务。
我收到Task already scheduled or cancelled 的错误消息。
欢迎任何改进的想法或建议或解决方案。
【问题讨论】:
标签: java multithreading jms