对synchronized(参数)里参数即同步监视器的理解

在学习java线程同步的时候,总感觉同步监视器是多余的,因为既然已经用synchronize对代码块进行了锁定,那么传的参数还有什么意义?
首先,在语法上,该参数可为任意对象
但是在实际项目中必须慎重选取同步监视器,我认为同步监视器实质上应该是“放锁的位置”。
1、对代码区域进行synchronize(同步监视器)处理后,所有进入该代码块区域的线程必须去“看看”同步监视器上有没有“放置”锁,如果有那么就等待,直到这个锁没了就进入该代码区域。
2、只要进入该代码区域的线程就会在同步监视器上“放”一把锁,运行完这个代码区域后“拿走”这个锁。所以第一个进入该代码区域的线程是自由的,因为没有哪一个线程在同步监视器上“放锁”。
所以需要注意:必须保证所有线程访问到的同步监视器是同一个对象,否则就会造成线程安全问题。如果在代码区域里更改同步同步监视器所指向的对象,那么就可能会有线程安全问题。
以上为个人总结,仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值