Java多线程锁对象的改变

来源:互联网 发布:node v6.11.1 x64.msi 编辑:程序博客网 时间:2024/06/10 20:17

在将任何数据类型作为同步锁时,需要注意的是,是否有多个线程同时持有锁对象,如果同时持有相同的锁对象,则这些线程之间就是同步的;如果分别获得锁对象,这些线程之间就是异步的。

这里写图片描述
这里写图片描述

这个时候线程A和B持有的锁都是”123”,虽然将锁改成了”456”,但结果还是同步的,因为A和B共同争抢的锁是”123”。

把Thread.sleep(50)放开
这里写图片描述

这个时候A取得的锁是”123”,过了50毫秒之后B线程取得的锁上”456”。所以是异步的。

友情提示:只要对象不变,即使对象的属性被改变,运行的结果还是同步的。

1 0
原创粉丝点击