【Java 多线程并发】Java 锁(中)—— Synchronized 同步锁、ReentrantLock、Semaphonre 信号量、AtomicInteger

上一篇:【Java 多线程并发】Java 锁(上)—— 乐观锁、悲观锁、自旋锁

4.Synchronized 同步锁

synchronized 它可以把任意一个非 NULL 的对象当作锁。

他属于独占式的悲观锁,同时属于可重入锁。

Synchronized 作用范围

1.作用于方法时,锁住的是对象的实例(this);

2.当作用于静态方法时,锁住的是 Class 实例,又因为 Class 的相关数据存储在永久代 PermGen(jdk1.8 则是 metaspace),永久代是全局共享的,因此静态方法锁相当于类的一个全局锁,会锁所有调用该方法的线程;

3.synchronized 作用于一个对象实例时,锁住的是所有以该对象为锁的代码块。它有多个队列,当多个线程一起访问某个对象监视器的时候,对象监视器会将这些线程存储在不同的容器中。

Synchronized 核心组件

1)Wait Set:哪些调用 wait 方法被阻塞的线程被放置在这里;

2)Contention List:竞争队列,所有请求锁的线程首先被放在这个竞争队列中;

3)Entry List:Contention List 中那些有资格成为候选资源的线程被移动到 Entry List 中

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值