开发者社区> 学堂小助手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【第 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() 才可以唤醒。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
文本与字体属性综合案例 | 学习笔记
快速学习文本与字体属性综合案例。
21 0
综合案例5-显示表单 | 学习笔记
快速学习综合案例5-显示表单
28 0
Mule ESB 学习笔记
写之前的内容时,Mule刚刚3.0.1版本,很多官方文档还没有更新(尤其示例代码),维持在V2的状态。经过了一年多的时间,Mule社区版发展至了3.2版本,并且推出了Mule Studio可视化开发工具(当前beta状态,支持Mule 3.1.2)。 将以前自己验证的示例代码在3.1.2版本上又跑了一遍(有些变化),在此做一下记录。 一. 服务调用 1. Mule实现并提供Web
1320 0
1786
文章
0
问答
来源圈子
更多
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载