Singleton和一次只能有一个用户的类之间有区别吗?

时间:2015-11-09 10:34:10

标签: java singleton

我想我理解Singleton模式。在我看来,在许多情况下,多个用户正在访问模式强制执行的单个实例。但是有一个改进可以防止该实例被使用(甚至只读),而另一个用户正在访问它或者它仍然是一个单身人士吗?

编辑:因此,如果Singleton不阻止多个线程访问它,那么是否有标准方式来强制执行此进一步的功能。要清楚,如果一个线程在完成访问Singleton的第一个线程之前尝试获取实例,则抛出异常或线程阻塞?

3 个答案:

答案 0 :(得分:0)

Singleton只能实例化一次。这并没有说明它拥有的(同时)用户数量。

你说的是:一个实例只能有一个用户的类,这意味着:每个用户有一个不同的实例,而不是只有一个用户可以使用它。

所以:那里有很大的不同。

答案 1 :(得分:0)

没有。单例模式确保只有一个类的实例。它没有做任何同步。

您可以通过使用同步方法在课堂上自由地实现此功能。

答案 2 :(得分:0)

你可以使用这个线程安全单例的方法:

https://stackoverflow.com/a/16106598/327786

public class CassandraAstyanaxConnection {
    private static class Holder {
        static final CassandraAstyanaxConnection INSTANCE = new CassandraAstyanaxConnection();
    }

    public static CassandraAstyanaxConnection getInstance() {
        return Holder.INSTANCE;
    }
    // rest of class omitted
}