多线程实现单例模式

Posted xuechengeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程实现单例模式相关的知识,希望对你有一定的参考价值。

 

 

代码:

技术图片
import threading


def synchronized(func):
    func.__lock__ = threading.Lock()

    def lock_func(*args, **kwargs):
        with func.__lock__:
            return func(*args, **kwargs)

    return lock_func


class Singleton(object):
    instance = None

    @synchronized
    def __new__(cls, *args, **kwargs):
        """
        :type kwargs: object
        """
        if cls.instance is None:
            cls.instance = super().__new__(cls)
        return cls.instance

    def __init__(self, num):
        self.a = num + 5

    def printf(self):
        print(self.a)


a = Singleton(3)
print(id(a))
b = Singleton(4)
print(id(b))
View Code

 

以上是关于多线程实现单例模式的主要内容,如果未能解决你的问题,请参考以下文章

单例模式

单例模式详解

单例模式在多线程下的多种实现模式

多线程实现单例模式

Java多线程(单例模式堵塞队列定时器)

单例模式的几种实现方式