Syschronized 关键字

Syschronized 同步锁

synchronized 它可以把任意一个非 NULL 的对象当作锁。它属于独占式的悲观锁,同时属于可重 入锁。

1. Synchronized 作用范围

  1. 作用于方法时,锁住的是对象的实例( this );
  2. 当作用于静态方法时,锁住的是 Class 实例,又因为 Class 的相关数据存储在永久带PermGen (jdk1.8 则是 metaspace ),永久带是全局共享的,因此静态方法锁相当于类的一个全局锁, 会锁所有调用该方法的线程;
  3. synchronized 作用于一个对象实例时,锁住的是所有以该对象为锁的代码块。它有多个队列, 当多个线程一起访问某个对象监视器的时候,对象监视器会将这些线程存储在不同的容器中。

2. Synchronized 核心组件

  1. Wait Set:哪些调用 wait 方法被阻塞的线程被放置在这里;
  2. Contention List:竞争队列,所有请求锁的线程首先被放在这个竞争队列中;
  3. Entry ListContention List 中那些有资格成为候选资源的线程被移动到 Entry
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值