在将任何数据类型作为同步锁时,需要注意的是,是否有多个线程同时持有锁对象,如果同时持有相同的锁对象,则这些线程之间就是同步的;如果分别获得锁对象,这些线程之间就是异步的。
这个时候线程A和B持有的锁都是”123”,虽然将锁改成了”456”,但结果还是同步的,因为A和B共同争抢的锁是”123”。
把Thread.sleep(50)放开
这个时候A取得的锁是”123”,过了50毫秒之后B线程取得的锁上”456”。所以是异步的。
友情提示:只要对象不变,即使对象的属性被改变,运行的结果还是同步的。
本文深入探讨了使用不同数据类型作为同步锁时线程间的同步与异步行为,并通过实例解释了即使锁对象属性发生变化,只要对象本身不变,线程间的同步状态依然保持不变的现象。
1479

被折叠的 条评论
为什么被折叠?



