我想我理解Singleton模式。在我看来,在许多情况下,多个用户正在访问模式强制执行的单个实例。但是有一个改进可以防止该实例被使用(甚至只读),而另一个用户正在访问它或者它仍然是一个单身人士吗?
编辑:因此,如果Singleton不阻止多个线程访问它,那么是否有标准方式来强制执行此进一步的功能。要清楚,如果一个线程在完成访问Singleton的第一个线程之前尝试获取实例,则抛出异常或线程阻塞?
答案 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
}