我想创建一个是{A TimerTask
和Thread
的类。我假设这个想法没有错。我在帖子here的“期望输出”部分中提到了我这样做的原因。
Java类不能从两个类继承。那么,我该如何解决这个问题呢?
原因在于我在我的问题中提到的帖子。
实际输出: 所有计时器任务都在main方法中执行。在执行所有计时器任务之前,将显示我的主代码的最后一个print语句。我不希望这样。
预期输出: 我希望main的结束打印声明能够在其他所有内容之后出现。
答案 0 :(得分:9)
扩展TimerTask并实现Runnable
重新生成原始问题后进行修改:检查https://stackoverflow.com/a/4951059/869488
答案 1 :(得分:5)
你问的是错误的问题。在Java中不可能进行多重继承,但这不是您的实际目标。
您想要的是等待多个定时任务完成的能力。有几种方法可以实现这一目标。
最简单的可能是使用ScheduledExecutionService
,它会为您提供一个{I} {},您可以等待,类似于您习惯的Future
方法。
另一种方法是使用CountDownLatch
让每个定时器任务在完成后减少锁存器;然后,您可以使用join
等待他们完成。
另一个是使用await
和wait
原语自行构建同步的策略 - 您的问题也不难以这种方式解决。
答案 2 :(得分:2)
Java不支持您想要的设计。
支持的设计是使用wait
和notify
而不是加入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()
{
}
}