RosettaCodeData/Task/Determine-if-only-one-insta.../Java/determine-if-only-one-insta...

36 lines
1.1 KiB
Java

import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.UnknownHostException;
public class SingletonApp
{
private static final int PORT = 65000; // random large port number
private static ServerSocket s;
// static initializer
static {
try {
s = new ServerSocket(PORT, 10, InetAddress.getLocalHost());
} catch (UnknownHostException e) {
// shouldn't happen for localhost
} catch (IOException e) {
// port taken, so app is already running
System.out.print("Application is already running,");
System.out.println(" so terminating this instance.");
System.exit(0);
}
}
public static void main(String[] args) {
System.out.print("OK, only this instance is running");
System.out.println(" but will terminate in 10 seconds.");
try {
Thread.sleep(10000);
if (s != null && !s.isClosed()) s.close();
} catch (Exception e) {
System.err.println(e);
}
}
}