更新时间:2023-12-08 来源:黑马程序员 浏览量:
当涉及到线程安全的单例模式时,可以使用Python中的线程锁(threading.Lock())来确保只有一个线程能够实例化该类。以下是一个示例:
import threading class Singleton: _instance = None _lock = threading.Lock() def __new__(cls, *args, **kwargs): if not cls._instance: with cls._lock: if not cls._instance: cls._instance = super().__new__(cls) return cls._instance # 示例用法 def create_singleton_instance(): singleton_instance = Singleton() print(f"Singleton instance ID: {id(singleton_instance)}") # 创建多个线程来尝试获取单例实例 threads = [] for _ in range(5): thread = threading.Thread(target=create_singleton_instance) threads.append(thread) thread.start() for thread in threads: thread.join()
这个示例中,Singleton类使用__new__方法来控制实例的创建,确保只有一个实例被创建。_lock是一个 threading.Lock()对象,用于在多线程环境下保护对_instance的访问,防止多个线程同时创建实例。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19