I want my application to check if another version of itself is already running.
For example, demo.jar
started, user clicks to run it again, but the second instance realizes "oh wait, there is already a demo.jar
running." and quits with a message.
What you are looking for can probably best be accomplished with a lock file. By lock file I simply mean a file that will have a predefined location and whose existence is your mutex.
Test if that file exists when your program starts, if it does, exit immediately. Create a file in a known location. If your program exits normally, delete the lock file.
Probably best is if you can also populate the file with a pid (process id) so that you can detect abnormal exits that didn't delete the file but this get OS specific.