- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我经历了下面提到的 Java 中的单例设计模式。我无法理解 public static getter 或 accessor 方法中的 Synchronized 关键字如何防止创建多个对象?如果它被两个不同的类调用两次,Synchronized 应该使它们的调用同步,即一个接一个。它如何只控制一个对象的创建?请详细解释并检查评论我对修饰符的假设是否正确
class MySingleton
{
private static MySingleton singletonObj; //as it is private it cannot be referenced outside of this class
//and as it is static all the instances of this class share the same copy of this refrence variable
private MySingleton()
{
System.out.println("Welcome to a singleton design pattern");
System.out.println("Objects cannot be instantiated outside of this class");
}
public static synchronized MySingleton getASingletonObject()
{
if(singletonObj==null)
{
singletonObj=new MySingleton();
}
return singletonObj;
}
}
非常感谢帮助:)谢谢
最佳答案
你的问题是关于它的工作方式:你有一个实例不是因为同步,而是因为它存储在一个静态变量中,并且只实例化一次(通过延迟创建 - 由 if 检查)。
synchronized 确保只有一个线程会实例化对象,并避免许多线程可能创建重复项的错误。
这是实现它的另一种方法,我发现它更简单,也同样高效:
public class Singleton
private static final Singleton instance=new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}
注意:使用这种实现的唯一条件是你的构造函数(新的)不应该抛出任何异常,并且应该只包含简单的代码,比如变量初始化。
关于java - 如何在 Java 中制作同步单例设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24054296/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!