微信扫一扫

028-83195727 , 15928970361
business@forhy.com

Java多线程锁对象的改变

java,多线程2016-11-22

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


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

把Thread.sleep(50)放开

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

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