构造函数内部的synchronized部分和同步的构造函数差异

时间:2014-04-28 09:35:52

标签: java concurrency synchronization synchronized

我注意到有趣的行为:

我可以写

class My {
     public My(){
        synchronized(this){
            // code
        }

    }  
}

但我不能写

class My {
         public synchronized My(){
                // code
            }

        }  
    }

我认为两种结构都与java API相同。

请澄清这种误解。

2 个答案:

答案 0 :(得分:2)

在第一种情况下,几乎创建了对象,只需要执行构造函数的主体。

但是,在第二种情况下,没有任何对象可以同步。

答案 1 :(得分:0)

两个线程创建相同对象是不可能的情况!

因此,同步修饰符对构造函数没有意义。