The JUnique library can be used to prevent a user to run at the same time more instances of the same Java application.
JUnique implements locks and communication channels shared between all the JVM instances launched by the same user. See the documentation for more details.
JUnique requires a J2SE environment 1.4 or later.