Soluzione numero 2: con i Socket.

codice:
import java.net.*;
import java.io.*;
/**
 *
 * @author Andrea
 */
public class RunOnce {
    
    /** Creates a new instance of RunOnce */
    ServerSocket ss1,ss2;
    public RunOnce() {
        try {
            ss1 = new ServerSocket(6666);
        }
        catch (IOException e) {
            System.out.println("Un'altra istanza del programma è in esecuzione!");
            System.exit(-1);
        }
    }
    
    public static void main (String[] args) {
        RunOnce ro = new RunOnce();
        try {
            System.in.read();
        }
        catch (Exception e) {
            
        }
    }    
}
Compila ed esegui in due finestre differenti. Occhio che chiaramente la porta specificata dev'essere disponibile (ie: non devi avere servizi che la impegnino).