Java中每个用户的单个应用程序实例

Java中每个用户的单个应用程序实例,java,swing,Java,Swing,我在Swing中创建了应用程序,我只想运行它的一个实例。我写了这样的东西: private static final int PORT = 12345; { try { new ServerSocket(PORT, 10, InetAddress.getLocalHost()); } catch (UnknownHostException e) { // shouldn't happen for localhost } catch (IOE

我在Swing中创建了应用程序,我只想运行它的一个实例。我写了这样的东西:

private static final int PORT = 12345;
{
    try {
        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.println("Application already exist");
        System.exit(0);
    }
}

它可以工作,但只适用于所有系统。因此,如果一个用户运行它,另一个用户就不能同时使用它。所以我希望每个用户只能运行这个应用程序的一个实例。您知道我该怎么做吗?

对于每个用户,将端口号存储为首选项。首选项将与用户帐户相关联。用户第一次运行应用程序时,首选项将不存在——随机生成一个端口号并为该用户存储它。每次之后,当用户启动应用程序时,读取他们的端口首选项


因为每个用户将使用不同的端口,所以每个用户实例不会相互干扰——但每个用户将被限制为一个实例。

使用单例模式。[[1]:但是如果应用程序突然中断怎么办?首选项仍将被记住,应用程序将不会启动。