一个类中有个方法 method(),
1.
public synchronized void method(){
    //code
}2.
public void method(){
    synchronized(this){
        //code
    }
}
两个有什么区别, 一个意思吗?是不是都是锁 当前对象?

解决方案 »

  1.   

    synchronized加在方法是获取对象的锁才能执行,synchronized()括号内可以是很多其他的东西,加this就是本对象,你也加其他的对象或者类,对应就是获取其他对象或者类上的锁。
      

  2.   

    锁都是this,因为synchronized(this)这已经写了,区别就是,方法前面加synchronized关键字时,锁只能是this,而synchronized(obj)中,锁可以放任意对象,包括.class文件也可以,用起来更加灵活。