生产消费拿馒头
来源:互联网 发布:java中方法的调用顺序 编辑:程序博客网 时间:2024/04/28 10:58
package com.phone.week5.day3;
public class MasterStudentDemo {
public static void main(String[] args) { final LanZi lz = new LanZi();// 创建一个篮子对象,它也是相当于锁 new Thread(new Runnable() { @Override public void run() { new Master(lz).fang();// 创建一个师傅对象 } }, "师父A").start(); new Thread(new Runnable() { @Override public void run() { new Master(lz).fang();// 创建一个师傅对象 } }, "师父B").start(); new Thread(new Runnable() { @Override public void run() { new Student(lz).na();// 创建第一个学生对象 } }, "学生A").start(); new Thread(new Runnable() { @Override public void run() { new Student(lz).na();// 创建第一个学生对象 } }, "学生B").start(); new Thread(new Runnable() { @Override public void run() { new Student(lz).na();// 创建第一个学生对象 } }, "学生C").start();}// 师傅类static class Master { LanZi lz; public Master(LanZi lz) { super(); this.lz = lz; } public void fang() { for (int i = 1; i <= 3; i++) { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } lz.zengJia();// 增加 } }}// 学生类static class Student { LanZi lz; public Student(LanZi lz) { super(); this.lz = lz; } public void na() { for (int i = 1; i <= 3; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } lz.jianShao(); } }}
}
// 篮子
class LanZi {
// private boolean flag=false;
private int number = 6;
// 馒头增加的方法public synchronized void zengJia() { while (number >= 6) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } // while(number<6){ number++; System.out.println(Thread.currentThread().getName() + "放了一个馒头,篮子里已经有:" + number + "个馒头了"); this.notifyAll(); // }}// 馒头减少的方法public synchronized void jianShao() { while (number <= 0) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } number--; System.out.println(Thread.currentThread().getName() + "学生拿了一个,篮子里还剩:" + number + "个"); this.notifyAll();}
}
0 0
- 生产消费拿馒头
- 线程--工人吃馒头、蜜蜂与熊生产消费
- 多线程经典问题:馒头问题 生产和消费问题(线程的通信问题)
- 有一个和尚负责做馒头,做好30个其它三个和尚就可以吃馒头, *当馒头吃完了,第一个和尚就再做30个馒头 生产消费
- 生产消费
- 生产消费
- 眼镜生产消费
- 生产和消费
- 继 生产和消费
- 多线程生产与消费
- 多线程生产消费问题
- 线程生产消费模式
- 生产消费模式
- 生产消费模式
- Thead 生产消费
- 生产消费模型demo
- 线程---生产消费问题
- 生产消费设计模式
- 手机报错:android.view.InflateException: Binary XML file line
- IOS 支付宝钱包整合
- 最大最小值选择 和随机选择
- 开源社区的知识产权
- LeetCode_Binary Tree Inorder Traversal
- 生产消费拿馒头
- 2016美团秋招笔试模拟
- (一)linux下配置jenkins--安装
- 使用JSON进行数据传输
- spring任务调度
- 2016校招腾讯研发岗笔试题(第二题)用Java实现
- Struts2 类型转换
- 数据存储方式有哪些?
- android binder