synchronized注意点

synchronized

synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:

  1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;

  2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;

  3. 修饰一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;

  4. 修饰一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。

注意点

  1. 一个类中所有标注synchronized的方法都将被管理,当一个synchronized方法抢占到锁,其他synchronized方法都将停止等待锁资源释放,没有标注synchronized的方法不会被影响
  2. 不是同一把锁的方法不会相互影响
  3. 注意静态同步方法和普通同步方法不是一个锁对象,相互之间不影响
  4. 锁对象:
    1. 对于普通同步方法:锁是当前实例对象
    2. 对于静态同步方法:锁是当前类的class对象
    3. 对于同步方法块,锁是synchronized括号里面配置的对象
posted @ 2021-07-06 11:29  锤子布  阅读(65)  评论(0编辑  收藏  举报