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
}