If I want to ensure exclusive access to an object in Java, I can write something like this:
...
Zoo zoo = findZoo();
synchronized(zoo)
{
zoo.feedAllTheAnimals();
...
}
Is there a way to check if an object is currently locked? I don’t want my thread to wait if another thread is accessing zoo. If zoo is not locked, I want my thread to acquire the lock and execute the synchronized block; if not, I want it to skip it.
How can I do this?
You can’t do it using the low-level native synchronization embedded in Java. But you can do it using the high-level APIs provided in the concurrent package.