TimerTask的替代方案,它支持等待完成?

时间:2013-03-11 09:06:46

标签: java

我想创建一个是{A TimerTaskThread的类。我假设这个想法没有错。我在帖子here的“期望输出”部分中提到了我这样做的原因。

Java类不能从两个类继承。那么,我该如何解决这个问题呢?

原因在于我在我的问题中提到的帖子。

实际输出: 所有计时器任务都在main方法中执行。在执行所有计时器任务之前,将显示我的主代码的最后一个print语句。我不希望这样。

预期输出: 我希望main的结束打印声明能够在其他所有内容之后出现。

4 个答案:

答案 0 :(得分:9)

扩展TimerTask并实现Runnable

重新生成原始问题后进行修改:检查https://stackoverflow.com/a/4951059/869488

答案 1 :(得分:5)

你问的是错误的问题。在Java中不可能进行多重继承,但这不是您的实际目标。

您想要的是等待多个定时任务完成的能力。有几种方法可以实现这一目标。

最简单的可能是使用ScheduledExecutionService,它会为您提供一个{I} {},您可以等待,类似于您习惯的Future方法。

另一种方法是使用CountDownLatch让每个定时器任务在完成后减少锁存器;然后,您可以使用join等待他们完成。

另一个是使用awaitwait原语自行构建同步的策略 - 您的问题也不难以这种方式解决。

答案 2 :(得分:2)

Java不支持您想要的设计。

支持的设计是使用waitnotify而不是加入TimerTask线程(您无法做到)。此SO问题下的示例:A good small example to demonstrate wait() and notify() method in java

答案 3 :(得分:1)

您可以实现Runnable。

class BulbJob extends TimerTask implements Runnable
{

    public void run()
   {

   }
}