不是在实例化期间,而是在单例对象实例化完成后,如果两个或多个线程尝试访问同一个单例对象,会发生什么情况?特别是在单例对象需要花费大量时间来处理请求的情况下(比如1分钟)...在这种情况下,如果例如,5个线程尝试访问同一个单例对象,结果会是什么?
附加问题:通常我们什么时候应该采用单例模式,什么时候应该避免它?
除非在单例中执行同步(锁定),否则答案是这样的:这是一个混战。
尽管单例确保在请求时仅使用对象的一个实例,但该模式本身并不本质上提供任何形式的线程安全性。这由实施者决定。
在您引用的特定情况下(使用长时间运行的方法),同步对使用类或对象级变量的任何方法的访问至关重要。如果不这样做,很可能会导致竞争条件。
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)