package com.kuang.gaoji;
//思路
//1.思考需要哪些对象?
// 生产 , 消费 , 产品 , 容器
//2.分工
/*
生产者只管生产
消费者只管消费
鸡: 实体类
容器 :
容器添加数据.
要判断容器是否满 , 满了等待消费者消费
没有满,通知生产者生产
容器减少数据
判断还有没有数据, 没有数据的话 . 等待生产者生产
消费完毕 , 通知生产者生产
*/
import java.sql.SQLOutput;
//测试生产者和消费者问题
public class TestPC {
public static void main(String[] args) {
SynContainer synContainer = new SynContainer();
new Productor(synContainer).start();
new Consumer(synContainer).start();
}
}
//生产者
class Productor extends Thread{
//需要向容器中加入产品
SynContainer container;
public Productor(SynContainer container){
this.container = container;
}
@Override
public void run() {
for (int i = 1; i < 100; i++) {
//生产者添加产品
container.push(new Chicken(i));
System.out.println("生产者生产了"+i+"鸡");
}
}
}
//消费者
class Consumer extends Thread{
SynContainer container;
public Consumer(SynContainer container){
this.container = container;
}
@Override
public void run() {
for (int i = 1; i < 100; i++) {
//消费者拿走产品
Chicken chicken = container.pop();
System.out.println("消费者消费了"+chicken.id+"鸡");
}
}
}
//缓冲区-->容器
class SynContainer{
//容器
Chicken[] chickens = new Chicken[10];
//容器的计数器
int num = 0;
//生产者放入产品
public synchronized void push(Chicken chicken) {
//假如容易已经满了,就不用放,等待消费者消费
if (num>=chickens.length){
//等待消费者消费
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//假如容器没有满 , 通知生产生成
System.out.println("num,,,,,"+num);
chickens[num] = chicken;
System.out.println("数组有多少个元素"+num);
num++;
//通知消费者消费
this.notifyAll();
}
//消费者拿走产品
public synchronized Chicken pop(){
//假如容器空的,等待
if (num<=0){
//等待生产
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
num--;
Chicken chicken = chickens[num];
//通知生产者生产
this.notifyAll();
return chicken;
}
}
//产品->鸡
class Chicken {
int id;
public Chicken(int id) {
this.id = id;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
狂神说Java-多线程课程全部代码.rar
共120个文件
class:71个
java:34个
xml:8个
需积分: 13 5 下载量 72 浏览量
2021-11-26
10:13:13
上传
评论
收藏 892KB RAR 举报
温馨提示
狂神说Java-多线程课程全部代码.rar
资源详情
资源评论
资源推荐
收起资源包目录
狂神说Java-多线程课程全部代码.rar (120个子文件)
TestCallable.class 3KB
SafeList.class 2KB
SafeJUCList.class 2KB
UnSafeList.class 2KB
Test03.class 2KB
Race.class 2KB
TestDaemon.class 2KB
Bank2.class 2KB
TestThread.class 2KB
UnsafeBuyTicket.class 2KB
SafeBuyTicket.class 2KB
Makeup.class 2KB
TestThread2.class 2KB
Test01.class 2KB
TestThread4.class 2KB
TestSleep1.class 2KB
SynContainer.class 1KB
Test04.class 1KB
TestSleep2.class 1KB
Bank.class 1KB
TestPriority.class 1KB
TestState.class 1KB
TestJoin.class 1KB
TV.class 1KB
ThreadNew.class 1KB
Test02.class 1KB
TestThread3.class 1KB
XiaoMing.class 1KB
Consumer.class 1KB
TestThread1.class 1KB
HelloWorld.class 1KB
Productor.class 1KB
Teacher.class 991B
WebDownloader.class 962B
WebDownloader.class 961B
WeddingCompany.class 913B
Test03$1.class 907B
MyThread3.class 890B
MyPriority.class 868B
MyYield.class 865B
ThreadPool.class 813B
Player.class 803B
UnsafeBank.class 785B
SafeBank.class 784B
Love.class 774B
TestYield.class 707B
DeadLocked.class 694B
Test01$1Test03.class 684B
TestPC.class 667B
Test01$1.class 663B
Test04$1.class 653B
TestPC2.class 626B
StaticProxy.class 622B
TestCHinese.class 621B
Test01$Test02.class 616B
TestLock.class 608B
Watcher.class 560B
God.class 552B
You.class 551B
MyThread4.class 536B
MyThread2.class 535B
MyThread1.class 509B
TestJoin2.class 468B
Account.class 420B
Account2.class 420B
Chicken.class 334B
LipStick.class 283B
Mirror.class 279B
Marry.class 141B
ILove.class 133B
ILike.class 132B
demo01.iml 484B
demo01.jar 458KB
commons-io-2.6.jar 210KB
commons-io-2.6.jar 210KB
TestPC.java 3KB
TestCallable.java 2KB
SafeBank.java 2KB
TestPC2.java 2KB
DeadLocked.java 2KB
UnsafeBank.java 2KB
TestThread2.java 2KB
Race.java 1KB
Test03.java 1KB
TestJoin2.java 1KB
SafeBuyTicket.java 1KB
StaticProxy.java 1KB
TestThread4.java 1KB
TestLock.java 1KB
UnsafeBuyTicket.java 1KB
Test01.java 1KB
TestPriority.java 1KB
ThreadNew.java 1KB
TestSleep1.java 1012B
TestThread3.java 908B
TestDaemon.java 894B
TestThread1.java 873B
TestSleep2.java 848B
TestJoin.java 751B
ThreadPool.java 730B
共 120 条
- 1
- 2
时间简史u
- 粉丝: 62
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0