关于Java中的synchronized和static synchronized和单件类

读到师兄的一篇博客,关于Java中的单件类模式,这么写的:

以前意识过单件类直接return不是线程安全的,但还真没注意过有static synchronized这种用法……

于是搜了一下,发现了这篇文章《synchronized与static synchronized 的区别》

结论和猜测的是一样的:

A: synchronized static是某个类的范围,synchronized static cSync{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。

B: synchronized 是某实例(对象)的范围,synchronized isSync(){}防止多个线程同时访问这个实例中的synchronized 方法。

另外,单件类在Java中还有可以不同步的方法:

最后给师兄博客加个反链。《Create singleton pattern in Java》

 

 

One thought on “关于Java中的synchronized和static synchronized和单件类

  1. coder4Jeoygin

    对方法加synchronized修饰符,synchronized static等同于synchronized(Singleton.class){},synchronized等同于synchronized(this){}
    Effective Java书上说实现Singleton的最佳方法是这样的:
    public enum Singleton {
    INSTANCE;
    }

    Reply

Leave a Reply

Your email address will not be published.