gpt4 book ai didi

java - java中的单例模式

转载 作者:行者123 更新时间:2023-12-02 06:53:11 25 4
gpt4 key购买 nike

我正在研究设计模式并遇到了单例模式

class SingletonPattern implements Runnable {
private static SingletonPattern single=null;

private SingletonPattern() { }

public synchronized static SingletonPattern getInstance() {
if(null==single) {
single=new SingletonPattern();
}
return single;
}
}

现在我明白同步将有助于两个线程无法访问 getInstance 方法,但如果我错了,请纠正我,两个不同的对象将有两个锁,每个都有一个。另一个线程可以从另一个对象启动,然后访问 getInstance () 方法,因此我们可以有两个对象。??

最佳答案

没有。同步方法将阻止2个线程同时调用该方法。您可以阅读同步 here 。对于静态方法,synchronized 作用于类而不是对象。

但是,这种制作单例的方式效率很低。和Double Checked Locking被打破。在java中实现单例的最好方法是使用 Enum

关于java - java中的单例模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com