| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Java实现多线程中生产者、消费者问题,简单易懂 -> 正文阅读 |
|
[大数据]Java实现多线程中生产者、消费者问题,简单易懂 |
思想:1、生产者在while循环里不停地生产“产品”,每生产一个,就交给店员,店员就得到一个产品 2、消费者在while循环里不停地消费产品,每消费一个,店员就移走一个产品 3、店员手里的产品少于20个,就从生产者那里拿走产品。等于20个,就停止从生产者那里拿走产品 4、店员手里的产品多于0个,就让消费者消费产品。等于0个,就停止让消费者消费产品 ? 生产者:生产者在while循环里不停地生产“产品”,每生产一个,就交给店员,店员就得到一个产品
消费者:消费者在while循环里不停地消费产品,每消费一个,店员就移走一个产品
店员:店员手里的产品少于20个,就从生产者那里拿走产品。等于20个,就停止从生产者那里拿走产品 店员手里的产品多于0个,就让消费者消费产品。等于0个,就停止让消费者消费产品
测试类:
Attention:一共有四个线程:生产者1、生产者2、消费者1、消费者2 生产者1和生产者2线程开启后,调用Producter类里的run方法,又在run方法里调用Clerk类里的getProduce方法 相当于生产者1和生产者2反复执行的是getProduce方法 生产者1和生产者2线程开启后,调用PConsummer类里的run方法,又在run方法里调用Clerk类里的removeProduce方法 相当于消费者1和消费者2反复执行的是removeProduce方法 而getProduce方法和removeProduce方法都是同步方法,它们都在Clerk类中定义,而Clerk类从始至终只有一个对象,所以两个同步方法的锁是同一把,即Clerk类的实例对象clerk 意味着在两个方法中,四个线程只能一个一个的执行,因此线程安全 执行截图:? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 13:38:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |