【第 06 个代码模型】综合案例:生产者与消费者(解决重复操作问题)|学习笔记

简介: 快速学习 【第 06 个代码模型】综合案例:生产者与消费者(解决重复操作问题)

开发者学堂课程【【名师课堂】Java 高级开发【第 06 个代码模型】综合案例:生产者与消费者(解决重复操作问题)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/372/detail/4567


【第 06 个代码模型】综合案例:生产者与消费者(解决重复操作问题)


内容介绍

一、方法名称

二、范例

 

一、方法名称

NO.

方法名称

类型

描述

01

Public final void wait()throws InterruptedException

普通

等待、死等

02

Pudlic final void notify()

普通

唤醒第一个等待线程

03

Pudlic final void notify()

普通

唤醒全部等待线程,那个优先级高,谁有可能先执行

现在的代码之中依然会存在有数据的重复设置或重复取出的问题,所以如果想要解决他就必须增加等待与唤醒机制。如果要想使用这一功能,就必须参考 Object 类中提供的方法;

 

二、范例

通过等待与唤醒机制来解决数据的重复操作问题

private string title;private string note;

/ flag = true:表示允许生产,但是不允许消费者取走

/falg = false:表示生产完毕,允许消费者取走,但是不能够生产 private boolean flag = true ;

public synchronized void get( {

if (flag m= true) { l/已经生产了,所以不允许重复生产

try i

.super.wait(o; t等待执行

catch (InterruptedException e) i

e.printstackTrace(;

}

Thread.sleep(5e);

}catch (InterruptedException e) {

e.printstackTrace();

if (flag == false){ l/已经生产了,所以不允i

this.flag = false ; 1/表示已经生产过了,不允许再生产了

super.notify; 1/唤醒等待线程|

public synchronized void set(string title,string note) {

if (this.flag == false) i //广现在不允许取走

try i

super.wait(o;1/等待执行

}catch (InterruptedException e) f.e.printstackTrace(o;

this.title = title ;

try i

Thread.sleep(10);

}catch (InterruptedException e) i

e.printstackTrace();

this.note = note ;

public synchronized void set(String title,strir

if (this.flag == true i/现在不允许取走

trv {

this.note = note ;

this.flag = true ; l/表示继续生产super.notify(); l

}\

 

面试题请解释是 sleep()与wait() 的区别?

sleep() 是 Thread 类中定义的方法,到了一定的时间后该休眠的线程可以自动唤醒

wait()Object 类中的定义的方法,如果想要唤醒,必须使用 notify()、notifyAll() 才可以唤醒。

相关文章
|
8月前
|
消息中间件 NoSQL 关系型数据库
6年高级开发就因这道题少了5K,Kafka如何避免消息重复消费?
一个6年工作经验的小伙伴,被问到这样一个问题,说Kafka是如何避免消息重复消费的?面试完之后,这位小伙伴来找到我,希望我能给一个思路。今天,我给大家分享一下我的思路。
101 1
|
7月前
|
消息中间件 存储 负载均衡
两个实验让我彻底弄懂了「订阅关系一致」
这篇文章,笔者想聊聊 RocketMQ 最佳实践之一:**保证订阅关系一致**。 订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例所订阅的 Topic 、Tag 必须完全一致。 如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。
两个实验让我彻底弄懂了「订阅关系一致」
|
4月前
|
Java
生产与消费(多线程练习题)
生产与消费(多线程练习题)
17 0
|
10月前
|
前端开发 NoSQL Redis
项目实战典型案例5——发送调查问卷流程图例子(将不必要的逻辑放入前端)
项目实战典型案例5——发送调查问卷流程图例子(将不必要的逻辑放入前端)
80 0
|
11月前
|
存储 缓存 前端开发
伙伴匹配推荐接口的优化策略【优先队列+多线程分批处理,java实现】
伙伴匹配推荐接口的优化策略【优先队列+多线程分批处理,java实现】
120 0
|
12月前
第十二章队列模拟注意事项
第十二章队列模拟注意事项
41 0
|
消息中间件 缓存 数据库
4 张图,9 个维度告诉你怎么做能确保 RocketMQ 不丢失消息
4 张图,9 个维度告诉你怎么做能确保 RocketMQ 不丢失消息
382 0
4 张图,9 个维度告诉你怎么做能确保 RocketMQ 不丢失消息
|
消息中间件 Java RocketMQ
消息消费要注意的细节|学习笔记
快速学习消息消费要注意的细节
66 0
消息消费要注意的细节|学习笔记
|
消息中间件 存储 数据采集
CreateDirectStream 消费数据补充|学习笔记
快速学习 CreateDirectStream 消费数据补充
69 0
|
消息中间件 RocketMQ 开发者
顺序消息分析|学习笔记
快速学习顺序消息分析
71 0
顺序消息分析|学习笔记