Call method after some delay in java

前端 未结 2 2038
鱼传尺愫
鱼传尺愫 2021-02-20 00:44

Scenario is like :

In my application, I opened one file, updated it and saved. Once the file saved event get fired and it will execute one method abc(). But

相关标签:
2条回答
  • 2021-02-20 01:32

    If you are using Thread.sleep(), just have the static method change a static global variable to something that you can use to indicate blocking the method call?

    public static boolean abcRunning;
    public static void abc()
    {
        if (YourClass.abcRunning == null || !YourClass.abcRunning)
        {
            YourClass.abcRunning = true;
            Thread.Sleep(60000);
            // TODO Your Stuff
            YourClass.abcRunning = false;
        }
    }
    

    Is there any reason this wouldn't work?

    0 讨论(0)
  • 2021-02-20 01:37

    Use Timer and TimerTask

    create a member variable of type Timer in YourClassType

    lets say: private Timer timer = new Timer();

    and your method will look something like this:

    public synchronized void abcCaller() {
        this.timer.cancel(); //this will cancel the current task. if there is no active task, nothing happens
        this.timer = new Timer();
    
        TimerTask action = new TimerTask() {
            public void run() {
                YourClassType.abc(); //as you said in the comments: abc is a static method
            }
    
        };
    
        this.timer.schedule(action, 60000); //this starts the task
    }
    
    0 讨论(0)
提交回复
热议问题