Java核心类库,线程通信

线程通信:

不同的线程执行不同的任务,如果这些任务有某种关系,线程之间必须能够通信,协调完成工作。

我们来看一个案例:生产者和消费者案例(producer/consumer)

  1. 生产者和消费者应该操作共享的资源(实现方式来做);

  2. 使用一个或多个线程来表示生产者producer;

  3. 使用一个或多个线程来表示消费者consumer。

Java核心类库,线程通信

生产者和消费者案例示意图

为什么生产者不直接把肉包子给消费者,而是先把数据存储到共享资源中,消费者再从共享资源中取出肉包子,再消费呢?

其实这里主要体现了面向对象的设计理念,我们先看一下耦合的两种类别:

  1. 高(紧)耦合:直接使用生产者把肉包子给消费者,那么生产者中得存在消费者的引用,同理,消费者要消费生产者生产的肉包子,那么消费者中也得存在生产者对象的引用。

  2. 低(松)耦合:使用一个中间对象,屏蔽了生产者和消费者直接的数据交互。

Java核心类库,线程通信

两种耦合方式的代码

如果,共享资源中没有肉包子,则生产者负责生产一个肉包子,否则生产者等待消费者消费完肉包子;共享资源中没有肉包子,则消费者等待生产者生产肉包子。

Java核心类库,线程通信

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值