The project I am working on would trigger various asynchronous jobs to do some work. As I look into it more these asynchronous jobs are actually being run as separate JVMs (separate java processes). Does it mean I would not be able to use any of the following if I need to synchronize between these processes:
- synchronized methods/blocks
- any lock that implements
java.util.concurrent.locks
Because it seems to me they are all thread-level?
Does Java provide support for IPC like semaphores between processes?
Advertisement
Answer
That’s right. You can not use any standard synchronization mechanisms because they are working into one JVM.
Solutions
- You can use file locks introduced in java 7.
- You can use synchronization via database entities.
- One of already implemented solutions like Terracota may be helpful
- Re-think your design. If you are beginner in java world try to talk in details with more experienced engineers. Your question shows that IMHO you are just on wrong way.