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

Tim*_*ime -4 java

我想创建一个IS A的类,TimerTask也是一个Thread.我假设这个想法没有错.为什么我这样做的原因是我交的"期望输出"一节中提到这里.

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

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

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

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

raj*_*esh 9

扩展TimerTask并实现Runnable

重新生成原始问题后进行编辑:检查/sf/answers/346574161/

  • `TimerTask`本身实现`Runnable`.所以这没有意义. (9认同)
  • @Time 3 down vote可能出于任何原因,比如你的标题'Java语言的设计缺陷',它不是建设性的,问题格式等.这里有8个upvotes,简单的回复. (3认同)
  • @Time:你的问题很简单,但答案非常简单,所以它得到了投票,此外,我们在这里得到问题的答案,而不是upvotes (2认同)

Jer*_*man 5

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

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

可能最直接的是使用a ScheduledExecutionService,它会给你一个Future你可以等待的方式,类似于join你习惯的方法.

另一种方法是使用a CountDownLatch使每个定时器任务在完成时减少锁存器; 然后你可以等待他们完成使用await.

另一个是使用waitnotify原语自己构建同步的策略- 你的问题也不难以这种方式解决.