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

相关文章
|
机器学习/深度学习 算法
【MATLAB】PSO粒子群优化BiLSTM(PSO_BiLSTM)的时间序列预测
【MATLAB】PSO粒子群优化BiLSTM(PSO_BiLSTM)的时间序列预测
427 5
|
安全 算法 网络安全
深入理解操作系统之进程调度策略网络安全与信息安全:防御前线的关键技术与策略
【2月更文挑战第29天】在多任务操作系统中,进程调度策略是核心机制之一,它决定了CPU资源的分配。本文将探讨三种经典的进程调度算法:先来先服务(FCFS)、短作业优先(SJF)和轮转调度(RR)。通过比较它们的优缺点,我们可以理解不同场景下的性能考量,以及如何根据实际需求选择合适的调度策略。 【2月更文挑战第29天】在数字化时代,网络安全和信息安全已成为维护信息完整性、确保数据隐私以及保障网络服务连续性的重要组成部分。本文将深入探讨网络安全漏洞的概念、加密技术的应用以及提升个人和企业安全意识的重要性。通过分析当前网络威胁的类型和特点,文章旨在为读者提供一系列针对网络攻击的预防措施和应对策略,
|
开发框架 小程序
uniApp——Eslint报错'uni' is not defined
uniApp——Eslint报错'uni' is not defined
745 0
|
Linux Docker 容器
使用Docker来安装ElasticSearch,并且配置ik分词器
使用Docker来安装ElasticSearch,并且配置ik分词器
620 0
|
NoSQL Java 关系型数据库
基于Java swing和mysql实现的员工工资管理系统(源码+数据库+运行指导视频)
基于Java swing和mysql实现的员工工资管理系统(源码+数据库+运行指导视频)
396 0
|
监控 JavaScript 前端开发
|
存储 数据安全/隐私保护
|
Scala
scala 学习笔记(07) 一等公民的函数
在scala中一切皆对象,一切皆函数,函数跟Int,String、Class等其它类型是处于同等的地位,换句话说,使用函数跟使用普通的类型一样,没什么区别,因此: 1、函数可以赋值给变量,可以当参数传递 def helloWorld(msg: String): Unit = { ...
1114 0