Reputation: 1402
From what I have searched so far, I find 2 solutions.
One is to create or reuse a file, then try to lock the file.
File file = new File(lockFile);
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
FileLock fileLock = randomAccessFile.getChannel().tryLock();
if (fileLock == null) {
// means someone have obtain the lock, therefore it is expected that an application is there
System.exit(0);
}
Advantage of this approach:
Source: How to implement a single instance Java application?
Create a file, without any lock, just use the presence of the file to determine if an application is running or not. Disadvantage of this approach:
Though I personally think this is worse option compared to 1, however it seems library use this approach more often. For example, Play Framework (RUNNING_PID file).
So can someone suggest why framework seem to suggest use of 2 over 1? What are the advantages of such approach?
In addition, is the selection choice depends on performance and ease of use. For example, client side application should choose 1 and server side application should choose 2?
Upvotes: 0
Views: 142