I have a method, say method1(), that takes a while to run. During it’s execution, if there is another call to method1(), it should be ignored. I have, roughly, something like this
boolean mFlag = false;
void method1()
{
if(!mFlag)
{
mFlag=true;
// do Stuff
mFlag=false;
}
}
This works. But I was wondering if there is a better way to do this preferably not involving any flags.
Yes, you should really be using something from java.util.concurrent.locks Your example isn’t quite strictly correct, that boolean needs to be volatile.
Edited to handle skipping execution on reentrance as inidicated in your comment. Unfortunatly there isn’t really a great way to do that with the built in library, as it’s a bit of an odd usecase, but I still think using the built in library is a better option.