java学习笔记----多线程 tryLock,读写锁,阻塞队列,同步包装器,弃用stop,suspend的原因

tryLock方法:线程在调用lock方法来获得另一个线程所持有的锁的时候,很可能发生阻塞。应该更加谨慎的申请锁。tryLock方法试图申请一个锁,成功返回true,否则返回false。tryLock可以带有超时参数,例如:lock.tryLock(100,TimeUnit.MILLISECONDS);第一个参数是数值,第二个参数是单位。如果调用带有超时参数的tryLoc...
摘要由CSDN通过智能技术生成

tryLock方法:

线程在调用lock方法来获得另一个线程所持有的锁的时候,很可能发生阻塞。应该更加谨慎的申请锁。

tryLock方法试图申请一个锁,成功返回true,否则返回false。

tryLock可以带有超时参数,例如:

lock.tryLock(100,TimeUnit.MILLISECONDS);

第一个参数是数值,第二个参数是单位。

如果调用带有超时参数的tryLock,那么如果线程在等待期间被中断,将抛出InterruptedException异常,这代表着允许程序打破死锁。

也可以调用lockInterruptibly方法,相当于超时为无限的tryLock方法。

条件对象进行等待时,也可以提供一个超时。

读写锁:

ReentrantReadWriteLock

读写锁允许同时有很多线程读取但仍然只能有一个线程修改。

private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();

private Lock readLock = lock.readLock();

private Lock writedLock = lock.writeLock();

readLock.lock();

writedLock.lock();

为什么弃用stop和suspend?

试图控制一个线程的行为很可能会导致在代码执行到某一个位置时被终止从而导致对象的破坏。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值