Java 在旧任务完成之前,是否可以不重复timedtask?

Java 在旧任务完成之前,是否可以不重复timedtask?,java,Java,我有一个定时任务,它可能需要一些时间来执行它的任务,有时会超过我设置的时间间隔 timer.schedule(new ConnectionCheckerThread(), 0,interval); 我看到,如果一个线程仍然在其run()方法中,那么另一个线程将在interval之后执行。 我不想那样。我希望另一个线程在前一个线程完成时启动 是否可能?在实例化新线程之前,使用线程.isAlive()定期检查线程是否仍处于活动状态。TimerTask不会启动另一个线程如果上一个任务仍在运行,则应将

我有一个定时任务,它可能需要一些时间来执行它的任务,有时会超过我设置的时间间隔

timer.schedule(new ConnectionCheckerThread(), 0,interval);
我看到,如果一个线程仍然在其run()方法中,那么另一个线程将在interval之后执行。 我不想那样。我希望另一个线程在前一个线程完成时启动


是否可能?

在实例化新线程之前,使用
线程.isAlive()
定期检查线程是否仍处于活动状态。

TimerTask不会启动另一个线程如果上一个任务仍在运行,则应将其排队等待以后执行

根据:

与每个计时器对象对应的是一个后台线程,用于按顺序执行计时器的所有任务。计时器任务应快速完成。如果计时器任务花费过多的时间来完成,它会“占用”计时器的任务执行线程。这反过来会延迟后续任务的执行,当(如果)有问题的任务最终完成时,后续任务可能会“聚集”并快速连续执行

在任何情况下,你最好改用


注意:您不需要为周期性执行安排任务,您只需在当前任务完成后的将来为单个执行安排下一个任务。

是的,正确:当活动任务花费太长时间时,我得到的效果是快速连续的线程。newSingleThreadScheduledExecutor是否退出了我请求的行为?即:“不要对任何线程排队,只需跳过这一轮并转到下一个间隔”因此,如果前一个任务仍在进行中,您希望忽略某些任务?没错!顾名思义,我的任务就是通过打开一个具有特定超时的套接字来检查连接是否打开。这必须在上一次尝试后每隔x秒执行一次。只需将下一个任务(使用
计时器
执行器
)安排为执行连接检查的
可运行\可调用
的最后一个操作。我的意思是,在每个任务计划的末尾,将来执行同一个任务。这就是你想要的吗?