Java 当前正在执行中的Stop()计时器

Java 当前正在执行中的Stop()计时器,java,swing,time,Java,Swing,Time,我在另一个关于swing Timer API和您的方法的问题中看到了preference stop(); 我的问题是,当计时器当前正在执行时,是否可以停止(如果util.timer,则取消)计时器 我有一个计时器,在调用stop()时需要停止线程,即使它当前正在运行。是的,可以通过调用stop()来停止Swing计时器。这就是为什么这个类有这个方法。说了这些,我觉得你的问题比你告诉我们的更多。但我不知道Swing计时器与“停止线程”有什么关系 编辑 你说: 我的问题是,我有一个摆动计时器,它执行

我在另一个关于swing Timer API和您的方法的问题中看到了preference stop(); 我的问题是,当计时器当前正在执行时,是否可以停止(如果util.timer,则取消)计时器


我有一个计时器,在调用stop()时需要停止线程,即使它当前正在运行。

是的,可以通过调用
stop()
来停止Swing计时器。这就是为什么这个类有这个方法。说了这些,我觉得你的问题比你告诉我们的更多。但我不知道Swing计时器与“停止线程”有什么关系

编辑
你说:


我的问题是,我有一个摆动计时器,它执行另一个方法,每30秒执行一次,我可以手动执行同一个方法,顺便说一下,我想在手动方法运行时停止摆动计时器,当手动方法完成时,摆动计时器启动,因为计时器可能会妨碍其他方法。主要是手动方式


一个可能的解决方案是:您可以使用Swing计时器,但只需将其大部分代码封装在由一个名为runTimer的布尔值控制的if语句中,这样计时器actionPerformed中的代码仅在布尔值为true时运行。然后在SwingWorker中运行后台线程,但在执行SwingWorker之前将runTimer布尔值设置为false,然后在SwingWorker的
done()
方法中将其设置为true。

是的,可以通过调用
stop()
来停止Swing计时器。这就是为什么这个类有这个方法。说了这些,我觉得你的问题比你告诉我们的更多。但我不知道Swing计时器与“停止线程”有什么关系

编辑
你说:


我的问题是,我有一个摆动计时器,它执行另一个方法,每30秒执行一次,我可以手动执行同一个方法,顺便说一下,我想在手动方法运行时停止摆动计时器,当手动方法完成时,摆动计时器启动,因为计时器可能会妨碍其他方法。主要是手动方式


一个可能的解决方案是:您可以使用Swing计时器,但只需将其大部分代码封装在由一个名为runTimer的布尔值控制的if语句中,这样计时器actionPerformed中的代码仅在布尔值为true时运行。然后在SwingWorker中运行后台线程,但在执行SwingWorker之前将runTimer布尔值设置为false,然后在SwingWorker的
done()
方法中将其设置为true。

混合线程和swing从来都不是一个好主意。混合线程和swing从来都不是一个好主意。我调用了stop方法,但是当有一个线程在执行中时,这个线程仍然执行到最后,我需要停止所有线程,即使是当前正在运行的线程,你不能这样停止线程;相反,它只会停止一个摆动计时器。如果你需要停止一个线程,最好给它一种停止的方式,比如在其作用域内的布尔值发生变化时让它停止,或者允许线程支持中断。我的问题是,我有一个摆动计时器,它执行另一个方法,每30秒执行一次,顺便说一句,我可以手动执行同一个方法,我想在手动方法运行时停止swing timer,当手动方法完成时,swing timer启动,因为计时器可能会妨碍其他方法。主要是手动方法好吧,我的代码没有太多的“if”,但是工作起来像我想要的,非常感谢你的关注和想法。我调用了stop方法,但是当有一个线程在执行时,这个线程仍然执行到最后,我需要停止所有线程,即使是当前正在运行的线程,但你不能以这种方式停止线程;相反,它只会停止一个摆动计时器。如果你需要停止一个线程,最好给它一种停止的方式,比如在其作用域内的布尔值发生变化时让它停止,或者允许线程支持中断。我的问题是,我有一个摆动计时器,它执行另一个方法,每30秒执行一次,顺便说一句,我可以手动执行同一个方法,我想在手动方法运行时停止swing timer,当手动方法完成时,swing timer启动,因为计时器可能会妨碍其他方法。主要是手动方法好吧,我的代码没有太多的“如果”,但我想要的工作,非常感谢你的关注和想法。