实现一个线程安全的单例模式,确保在多线程环境中只创建一个实例
时间: 2024-10-21 17:13:03 浏览: 32
详解python实现线程安全的单例模式
要实现一个线程安全的单例模式,你可以参考Python中的一个常见做法,如以下代码所示[^1]:
```python
from threading import Lock
class Singleton:
_instance_lock = Lock()
_instance = None
@classmethod
def get_instance(cls):
if cls._instance is None:
with cls._instance_lock:
if cls._instance is None:
cls._instance = cls()
return cls._instance
# 示例使用
singleton = Singleton.get_instance()
```
在这个实现中,我们使用了`_instance_lock`线程锁来保证在多线程情况下只有一个线程能够初始化`_instance`。当`get_instance()`方法首次被调用时,如果`_instance`不存在,线程会持有锁并检查再次;如果其他线程在此期间尝试创建实例,它们会被阻塞直到第一个线程完成。
阅读全文