Singleton用于同一类的两个运行实例

时间:2015-03-30 01:14:00

标签: java singleton

我用Java编程聊天客户端服务器。 我需要在客户端之间共享变量。我尝试使用Singleton Design Pattern,但每次运行客户端类的新实例时,我都会得到一个不同的Singleton类实例。

这是我的代码。我需要在客户之间共享clients,以便每个人都了解所有其他人。

private LinkedHashMap<String, String> clients = new LinkedHashMap<String, String>();

private static ClientListModel instance = null;

private ClientListModel() {
    System.out.println("NEW INSTANCE!");
}

public static ClientListModel getInstance() {
    if (instance == null)
        instance = new ClientListModel();

    return instance;
}

“新实体!”每次运行我的客户端代码时都会打印出来,实际上我得到一个空的clients LinkedHashMap。

在同一个类的两个或多个正在运行的实例之间共享数据的正确方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

在我看来,你应该确保线程的同步。所以你可以改变这样的代码。

public synchronized static  ClientListModel getInstance() {
    if (instance == null)
        instance = new ClientListModel();

    return instance;
}