将一个方法或一段代码块放到 synchronized 关键字作用域中,就等于给这块作用域上来一个锁,即同一时间只能有一个线程访问这个方法或这段代码。只有持有相同锁的才会形成互斥。
方法同步:将synchronized添加到方法的声明中即可,写在修饰符之后,返回类型之前。它持有的对象本身的对象锁,即为this,一个类中凡是有synchronized关键字的方法都是互斥的。它与方法中synchronized(this){}包含的代码块也是互斥的。
当synchronized来修饰一个静态方法时,由于静态方法是与类关联的,而与对象无关,其相当于synchronized(Class.calss){}。