Java实现:两个场景,一个是会在一分钟以下的间隔被多次调用;一种是很长时间才调用一次。要求,两分钟之内只被调用一次

例如33分来个调用,开始计时,34来,不做,从34开始计时;35来,不做,又从35开始计时;36来,诶,合在一起做,同时36又开始重新计时,以此类推

public synchronized void doSync() {
DateThread dateThread = new DateThread();
dateThread.run();
dateThread.shutdown();
}

// 计时线程
class DateThread extends  Thread {
    private volatile boolean isShutdown = true;
    
    public void shutdown(){
        this.isShutdown = false;
        interrupt();
    }
    
    public void run() {
        while (((System.currentTimeMillis() - lastTime) / 1000) < 120) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        lastTime = System.currentTimeMillis();
        setLastTime(lastTime);
        //此处实现被调用的函数
    }

}

一直实现不了相关逻辑,这是我写出来的代码,可是达不到我自己的目的。。。

参考一下timer 和TimerTask的用法