java synchronized与Lock

synchronizedLock
Java的关键字,jvm提供java接口
获取锁假设A线程获得锁,B线程等待。如果A线程阻塞,B线程会一直等待分情况而定,Lock有多个锁获取的方式,可以尝试获得锁,线程可以中断等待
释放锁1、已获取锁的线程执行完同步代码,释放锁 2、线程执行发生异常,jvm会让线程释放锁在finally中必须手动释放锁,不然容易造成线程死锁
锁状态无法判断可以判断
灵活控制可绑定多个条件
锁类型可重入 不可中断 非公平可重入 可中断 可公平
性能少量同步大量同步

Lock相对于synchronize优势

  • 灵活控制: Lock可针对同锁不同任务绑定多个条件,更简单高效地协调控制多组线程。
  • 提高效率:Lock(ReentrantReadWriteLock)可以提高多个线程进行读操作的效率。
  • 锁状态:Lock的tryLock()可以知道有没有成功获取锁
  • 可中断: 如果获取锁的线程由于要等待IO或者其他原因(比如调用sleep方法),获取锁的线程被阻塞了,但是又没有释放锁,其他线程便只能干巴巴地等待,这非常影响程序的执行效率。因此就需要有一种机制可以不让等待的线程一直无期限地等待下去(比如只等待一定的时间或者能够响应中断)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值