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
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?
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
}