显式锁

显式锁:高级功能,轮询,定时,中断,公平性: 非公平发出请求时锁可用可以直接抢,否则也要排队,公平的只要锁不可用或前面有人就去排队
公平性很好,但没必要,而且会带来性能问题(挂起和恢复线程的开销,恢复线程到线程真正运行有不少延迟,非公平锁在这段时间内可让其他线程可完成加解锁操作),统计上的公平性保证(线程最终能获得锁)就好了
非块结构(不基于代码块,加锁解锁可能不在同一栈帧),千万不要忘记在finally里解锁

       lock.lock();
		try {
			
		} finally {
			lock.unlock();
		}

目前synchronized性能接近显式锁,以前不如

内置锁:统计上公平,安全,线程转储中看到加锁和死锁信息更多(栈帧相关),优化(锁消除,锁粒度粗化,轻量级,偏向等),所以推荐内置锁,当需要高级功能用显式锁

读写锁:(Reentrant)ReadWriteLock 在多读少写的情况下性能提升,实现需要考虑多个问题
可重入,可降级(加写锁,加读锁,释放写锁),不可升级(会导致死锁,两个线程同时升级又都不肯放弃自己的读锁)
公平:等待时间最长的优先获取,现在读锁中,又一个读请求来了,若无写锁请求在排队可直接获取,否则去排队,现在写锁中,各种请求都去排队
非公平:见ReadWriteLock专栏分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值