多线程(六):多线程案例

多线程最最经典案例就是上一章的单例设计模式。

当然除了单例设计模式,还有其他的案例。

本章就 一一 来介绍。

阻塞队列

这里是第一次提到阻塞队列这个东西,简单介绍一下,什么是阻塞队列:

阻塞队列(BlockingQueue) 是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。

阻塞队列常用于生产者消费者模式:

生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。

这个先不管,等会就详细介绍。

那么我们在网上查一查有哪些阻塞队列呢?

  • ArrayBlockingQueue : 一个由数组结构组成的有界阻塞队列。
  • LinkedBlockingQueue : 一个由链表结构组成的有界阻塞队列。
  • PriorityBlockingQueue : 一个支持优先级排序的无界阻塞队列。

等等....;

这个东西非常有用,尤其是实现多线程时,多线程之间进行数据交互。

可以使用阻塞队列来简化代码编写。

并且它是线程安全的。

那我们先来看看生产者——消费者模式。

生产者——消费者模式

比如我们引入一个生活中的例子:

比如家里逢年过节的包饺子,假设有四个滑稽老铁,在包饺子,假设有一个擀面杖,一个用了擀面杖,其他人就要等待。

那么我们想要提高效率,多几个擀面杖不行吗?

可以的,就算多了几个擀面杖,四个滑稽老铁仍然需要 擀个饺子皮,包一个饺子。

所以我们可以引入这样的模式来加快效率:

一个老铁负责生产饺子皮,另外三个老铁取消费饺子皮。

这样比起来效率相对会加快。

既然我们引进了生产者——消费者模式,那为啥我们要引进这样的模式呢?有啥有用的呢?

当然不只是增加效率拉。

1.让代码块之间解耦合

 之前总是听说,高耦合低内聚,高内聚低耦合,啥啥啥的,从来没明白过。

这里来解释一下,啥叫耦合,啥叫内聚。

耦合:影响性强弱

内聚:关联性强弱

内聚就是功能一样的代码放在一起,举个例子,衣服要分门别类的放,就是相同的一类的要放在一起

高内聚低耦合:关联性强,相互影响性弱; 高耦合低内聚:关联性弱,相互影响性高。

我们来举个栗子(🌰)

有两个服务器相互交互数据:

正常情况下,二者相安无事,突然有一天,我们某个服务器崩了,假设 A 崩了,那么 B 发出的请求,得不到相应了。

那么此时 他们两个就是 耦合性高了。

所以我们需要降低耦合性。

这么降低呢?

我们就要用到阻塞队列。

我们在此基础上加上一个 阻塞队列, A 和

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值