java Synchronized“ 锁 ”到底是什么 ?如何确定对象的锁 ?

小龙女 小龙女 2019年07月05日 23:20:38 阅读 335

“ 锁 ” 的 本 质 其 实 是 monitorenter 和 monitorexit 字 节 码 指 令 的 一个 Reference 类 型 的 参 数 , 即 要 锁 定 和 解 锁 的 对 象 。 我 们 知 道 , 使 用Synchronized 可 以 修 饰 不 同 的 对 象 , 因 此 , 对 应 的 对 象 锁 可 以 这 么 确定 。

1.  如 果 Synchronized 明 确 指 定 了 锁 对 象 , 比 如 Synchronized( 变 量

名 ) 、 Synchronized(this) 等 , 说 明 加 解 锁 对 象 为 该 对 象 。

2.  如 果 没 有 明 确 指 定 :

若  Synchronized  修 饰 的 方 法 为 非 静 态 方 法 , 表 示 此 方 法 对 应 的 对 象 为

锁 对 象 ;

若  Synchronized  修 饰 的 方 法 为 静 态 方 法 , 则 表 示 此 方 法 对 应 的 类 对 象

为 锁 对 象 。

注 意 , 当 一 个 对 象 被 锁 住 时 , 对 象 里 面 所 有 用  Synchronized  修 饰 的

方 法 都 将 产 生 堵 塞 , 而 对 象 里 非  Synchronized  修 饰 的 方 法 可 正 常 被

调 用 , 不 受 锁 影 响 。


用户回答
提问者
小龙女
最近登录:07月05日 21:13
暂无职业介绍

文章

0

问答

7

粉丝

0