【发布时间】:2013-01-17 17:01:16
【问题描述】:
我编写了一个任务来通过套接字发送某个 TCP 消息。我有一个包含一堆消息和一些时间戳的文件,所以我将任务编程为 TimerTask,并使用带有第一个消息时间戳的 Timer 安排它。
当它完成时,任务运行方法结束,但它的关联线程仍然存在,它没有被取消。如果我尝试使用新时间重新安排任务,我会收到一个异常,告诉我无法重新安排已安排或取消的任务。
我也尝试在重新安排之前取消它,但显然,正如异常所说,它仍然是同样的问题。
我不能用固定的时间安排任务让它自己重复,因为每条消息都有时间而且不是固定的。
如何重新安排 TimerTask?顺便说一句,有没有什么方法可以等待任务结束,就像在套接字通信中,当它使用 ready 方法阻塞直到消息到达时一样?
【问题讨论】:
-
@pst 确实,如果我这样做,它会起作用。但正如我所指出的,即使在其 run 方法结束后,关联的线程仍然可以工作。这意味着,当发送了 100 条消息时,有 100 多个线程处于活动状态!我该如何解决?