【JMM】同步原语之Synchronized-简单介绍

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

文章首发于:clawhub.club


作用

synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性

修饰的对象

  1. 修饰代码块,作用范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象
  2. 修饰方法,作用范围是整个方法,作用的对象是调用这个方法的对象
  3. 修饰静态方法,作用范围是整个静态方法,作用的对象是这个类的所有对象
  4. 修饰类,作用范围是synchronized后面括号括起来的部分,作用的对象是这个类的所有对象

注意

  1. 当一个线程访问对象的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该对象中的非synchronized(this)同步代码块。
  2. 当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
  3. synchronized关键字不能继承。
    对于父类中用synchronized 修饰的方法,子类在覆盖该方法时,默认情况下不是同步的,必须显式的使用 synchronized 关键字修饰才行, 当然子类也可以直接调用父类的方法, 这样就间接实现了同步.
  4. 在定义接口方法时不能使用synchronized关键字。
  5. 构造方法不能使用synchronized关键字,但可以使用synchronized代码块来进行同步。
  6. 离开同步代码块后,所获得的锁会被自动释放。

来源:https://www.jianshu.com/p/347ea7f881f8

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » 【JMM】同步原语之Synchronized-简单介绍

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏