持续暂停/停止和启动/恢复 Java 计时器任务?
2022-09-02 11:19:57
						我有一个关于Java TimerTask的简单问题。如何根据特定条件暂停/恢复两个TimerTask任务?例如,我有两个相互运行的计时器。当第一个计时器的任务内部满足某个条件时,第一个计时器停止并启动第二个计时器,当第二个计时器的任务内部满足某个条件时,也会发生同样的事情。下面的类准确地显示了我的意思:
public class TimerTest {
    Timer timer1;
    Timer timer2;
    volatile boolean a = false;
    public TimerTest() {
        timer1 = new Timer();
        timer2 = new Timer();     
    }
    public void runStart() {
        timer1.scheduleAtFixedRate(new Task1(), 0, 1000);
    }
    class Task1 extends TimerTask {
        public void run() {
            System.out.println("Checking a");
            a = SomeClass.getSomeStaticValue();
            if (a) {
                // Pause/stop timer1, start/resume timer2 for 5 seconds
                timer2.schedule(new Task2(), 5000);
            }
        }
    }
    class Task2 extends TimerTask{
        public void run() {
            System.out.println("Checking a");
            a = SomeClass.getSomeStaticValue();
            if (!a) {
                // Pause/stop timer2, back to timer1
                timer1.scheduleAtFixedRate(new Task1(), 0, 1000);
            }
            // Do something...
        }
    }
    public static void main(String args[]) {
        TimerTest tt = new TimerTest();
        tt.runStart();      
    }
}
所以我的问题是,我如何在跑步时暂停,反之亦然?性能和时序是我主要关心的问题,因为这需要在另一个正在运行的线程中实现。顺便说一句,我正在尝试在Android上实现这些并发计时器。timer1timer2timer2
感谢您的帮助!