条件变量(condition)

1、在JDK 1.5之前,主要使用wait,notify ,notifyAll.执行条件操作中的等待和唤醒。
2、JDK1.5之后引入条件变量,他可以让一个线程在条件不满足的情况下一直等待,直到有线程唤醒他。
3、condition与wait、notify、的不同
    1、他允许在一个对象上可以有多个等待集合
    2、
4、用Lock创建condition对象
    Lock lock =new ReentrantLock();
    Condition notFull=lock.newCondition();
    Condition notEmpty=lock.newCondition();
5、常用方法
    **await**
    使当前线程在被唤醒或者被中断之前,一直出啊与等待状态
    当一个线程调用了await方法,线程进入阻塞状态,这是线程自身无法解除阻塞,需要其他线程来帮忙,否则该线程永远不会再执行,
    解除:
    a、某个线程在当前条件对象上调用方法singal,而该线程正好被选中
    b、调用singalAll方法
    c、其他线程调用该线程的的interrupt方法
    **singal**
    唤醒一个正在等待的线程,唤醒后仍要重新获取锁,如果获取成功,则离开await方法,否则将会继续等待
    **singalAll**
    唤醒所有等待线程,被唤醒的线程竞争锁,得到锁的线程才能离开await方法,其他没有锁的线程将会继续等待
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值