Java线程通信

线程通信:

1、 传统的线程通信

借助Object类提供的wait()、notify()、notifyAll() 3个方法 ,这3个方法由同步监视器对象来调用,可分为两种情况:

synchronized修饰同步方法,该类默认实例(this)就是同步监视器,可直接使用三个方法; synchronized 修饰同步代码块,同步监视器是synchronized(同步监视器)括号里的对象;

 

2、 使用Condition控制线程通信

线程使用Lock对象保证同步时,利用Condition类保持线程之间通信;

Lock替代了同步方法和同步代码块,Condition替代了同步监视器;

Condition实例被绑定在Lock对象上,要获得Lock对象的Condition实例,调用Lock对象的newCondition方法即可;

Condition类提供了3个方法:await()、signal()、signalAll()

功能与wait()、notify()、notifyAll()类似;

 

3、 使用阻塞队列(BlockingQueue)控制线程通信

生产者线程试图向BlockingQueue中放入元素时,若该队列已满,则该线程被阻塞

当消费者线程试图从BlockingQueue中取元素时,若队列已空,则该线程被阻塞;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值