-4

我想创建一个是 A 的类,TimerTask也是一个Thread. 我假设这个想法没有错。我这样做的原因在我在这里的帖子的“所需输出”部分中提到。

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

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

实际输出: 所有定时器任务都在main方法中执行。我的主代码的最后一条打印语句在所有计时器任务执行之前显示。我不想要那个。

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

4

4 回答 4

9

扩展 TimerTask 并实现 Runnable

重述原始问题后进行的编辑:检查https://stackoverflow.com/a/4951059/869488

于 2013-03-11T09:07:50.327 回答
5

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

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

可能最直接的方法是使用 a ScheduledExecutionService,它会Future以类似于join您习惯的方法的方式为您提供可以等待的 a 。

另一种方法是使用 aCountDownLatch让每个计时器任务在完成时减少锁存器;然后,您可以使用await.

还有一个是使用waitnotify原语自己构建同步的策略——你的问题也不难解决。

于 2013-03-11T09:44:53.970 回答
2

Java 不支持您想要的设计。

支持的设计是使用waitnotify不是加入TimerTask线程(您不能这样做)。此 SO 问题下的示例:一个很好的小示例,用于演示 java 中的 wait() 和 notify() 方法

于 2013-03-11T09:37:50.257 回答
1

您可以实现 Runnable。

class BulbJob extends TimerTask implements Runnable
{

    public void run()
   {

   }
}
于 2013-03-11T09:09:43.467 回答