等待唤醒机制------模拟线程生产和消费过程

等待唤醒机制------模拟线程生产和消费过程_第1张图片代码:
package cn.tedu.thread;
public class WaitNotifyDemo {
public static void main(String[] args) {
Product p=new Product();
p.setCount(100);
//开启线程—模型生产和消费
new Thread(new Manufacture§).start();
new Thread(new Manufacture§).start();
new Thread(new Manufacture§).start();
new Thread(new Consumer§).start();
new Thread(new Consumer§).start();
new Thread(new Consumer§).start();
}
}
//代表生产的类—模拟线程生产的过程
class Manufacture implements Runnable{
private Product p;
public Manufacture(Product p){
this.p=p;
}
//模拟生产
@Override
public void run() {
while (true){
synchronized §{
//if (p.flagfalse)//线程不会回头执行代码
while (p.flag
false)
//让线程等待
try {
p.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
//可以生产的最大范围
int count=1000-p.getCount();
//随机生产数量
int rancount=(int)(Math.random()*(count+1));
//设置商品数量
p.setCount(p.getCount()+rancount);
//输出
System.out.println
(“此次生产了” + rancount +
“个商品,还剩余”
+ p.getCount() + “个商品…”);

            //唤醒
            //p.notify();//随机唤醒一个
            p.notifyAll();
            //改变布尔值
            p.flag=false;

        }
    }
}

}
//代表消费的类—模拟线程消费的过程
class Consumer implements Runnable{
//
private Product p;
public Consumer(Product p){
this.p=p;
}
//线程消费的过程
@Override
public void run() {
while (true) {
synchronized § {//锁对象
//if(p.flagtrue)
while (p.flag
true)
//线程的等待
try {
p.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
//获取剩余商品数量
int count = p.getCount();
//获取此次随机消费的商品数量
int rancount = (int) (Math.random() * (count + 1));
//设置商品数量
//剩余数量-消费数量
p.setCount(count - rancount);
//输出结果
System.out.println
(“此次消费了” + rancount +
“个商品,还剩余” + p.getCount() + “个商品…”);
//唤醒
//p.notify();
p.notifyAll();
//
p.flag=true;
}
}
}
}
//代表商品的类
class Product{
//商品数量
private int count;
boolean flag=true;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
输出:

此次消费了923个商品,还剩余66个商品…
此次生产了823个商品,还剩余889个商品…
此次消费了675个商品,还剩余214个商品…
此次生产了394个商品,还剩余608个商品…
此次消费了4个商品,还剩余604个商品…
此次生产了349个商品,还剩余953个商品…
此次消费了715个商品,还剩余238个商品…
此次生产了638个商品,还剩余876个商品…
此次消费了176个商品,还剩余700个商品…
此次生产了168个商品,还剩余868个商品…
此次消费了409个商品,还剩余459个商品…
此次生产了313个商品,还剩余772个商品…
此次消费了315个商品,还剩余457个商品…
此次生产了334个商品,还剩余791个商品…
此次消费了88个商品,还剩余703个商品…
此次生产了172个商品,还剩余875个商品…
此次消费了403个商品,还剩余472个商品…
此次生产了95个商品,还剩余567个商品…
此次消费了536个商品,还剩余31个商品…
此次生产了282个商品,还剩余313个商品…
此次消费了247个商品,还剩余66个商品…
此次生产了3个商品,还剩余69个商品…
此次消费了0个商品,还剩余69个商品…
此次生产了535个商品,还剩余604个商品…
此次消费了450个商品,还剩余154个商品…
此次生产了453个商品,还剩余607个商品…
此次消费了93个商品,还剩余514个商品…
此次生产了397个商品,还剩余911个商品…
此次消费了907个商品,还剩余4个商品…
此次生产了952个商品,还剩余956个商品…
此次消费了33个商品,还剩余923个商品…
此次生产了15个商品,还剩余938个商品…
此次消费了638个商品,还剩余300个商品…
此次生产了407个商品,还剩余707个商品…
此次消费了55个商品,还剩余652个商品…
此次生产了35个商品,还剩余687个商品…
此次消费了57个商品,还剩余630个商品…
此次生产了116个商品,还剩余746个商品…
此次消费了128个商品,还剩余618个商品…
此次生产了83个商品,还剩余701个商品…
此次消费了644个商品,还剩余57个商品…
此次生产了751个商品,还剩余808个商品…
此次消费了213个商品,还剩余595个商品…
此次生产了225个商品,还剩余820个商品…
此次消费了325个商品,还剩余495个商品…
此次生产了375个商品,还剩余870个商品…
此次消费了726个商品,还剩余144个商品…
此次生产了618个商品,还剩余762个商品…
此次消费了564个商品,还剩余198个商品…
此次生产了345个商品,还剩余543个商品…
此次消费了411个商品,还剩余132个商品…
此次生产了113个商品,还剩余245个商品…
此次消费了207个商品,还剩余38个商品…
此次生产了707个商品,还剩余745个商品…
此次消费了622个商品,还剩余123个商品…
此次生产了314个商品,还剩余437个商品…
此次消费了182个商品,还剩余255个商品…
此次生产了127个商品,还剩余382个商品…
此次消费了5个商品,还剩余377个商品…
此次生产了519个商品,还剩余896个商品…
此次消费了26个商品,还剩余870个商品…
此次生产了45个商品,还剩余915个商品…
此次消费了891个商品,还剩余24个商品…
此次生产了164个商品,还剩余188个商品…
此次消费了22个商品,还剩余166个商品…
此次生产了764个商品,还剩余930个商品…
此次消费了640个商品,还剩余290个商品…
此次生产了663个商品,还剩余953个商品…
此次消费了213个商品,还剩余740个商品…
此次生产了135个商品,还剩余875个商品…
此次消费了246个商品,还剩余629个商品…
此次生产了127个商品,还剩余756个商品…
此次消费了339个商品,还剩余417个商品…
此次生产了369个商品,还剩余786个商品…
此次消费了311个商品,还剩余475个商品…
此次生产了232个商品,还剩余707个商品…
此次消费了210个商品,还剩余497个商品…
此次生产了10个商品,还剩余507个商品…
此次消费了88个商品,还剩余419个商品…
此次生产了337个商品,还剩余756个商品…
此次消费了706个商品,还剩余50个商品…
此次生产了512个商品,还剩余562个商品…
此次消费了486个商品,还剩余76个商品…
此次生产了551个商品,还剩余627个商品…
此次消费了78个商品,还剩余549个商品…
此次生产了213个商品,还剩余762个商品…
此次消费了760个商品,还剩余2个商品…
此次生产了981个商品,还剩余983个商品…
此次消费了981个商品,还剩余2个商品…
此次生产了56个商品,还剩余58个商品…
此次消费了4个商品,还剩余54个商品…
此次生产了408个商品,还剩余462个商品…
此次消费了55个商品,还剩余407个商品…
此次生产了555个商品,还剩余962个商品…
此次消费了707个商品,还剩余255个商品…
此次生产了455个商品,还剩余710个商品…
此次消费了202个商品,还剩余508个商品…
此次生产了136个商品,还剩余644个商品…
此次消费了195个商品,还剩余449个商品…
此次生产了379个商品,还剩余828个商品…
此次消费了699个商品,还剩余129个商品…
此次生产了857个商品,还剩余986个商品…
此次消费了885个商品,还剩余101个商品…
此次生产了121个商品,还剩余222个商品…
此次消费了80个商品,还剩余142个商品…
此次生产了782个商品,还剩余924个商品…
此次消费了124个商品,还剩余800个商品…
此次生产了123个商品,还剩余923个商品…
此次消费了814个商品,还剩余109个商品…
此次生产了299个商品,还剩余408个商品…
此次消费了327个商品,还剩余81个商品…
此次生产了217个商品,还剩余298个商品…
此次消费了36个商品,还剩余262个商品…
此次生产了688个商品,还剩余950个商品…
此次消费了861个商品,还剩余89个商品…
此次生产了400个商品,还剩余489个商品…
此次消费了209个商品,还剩余280个商品…
此次生产了278个商品,还剩余558个商品…
此次消费了440个商品,还剩余118个商品…
此次生产了582个商品,还剩余700个商品…
此次消费了336个商品,还剩余364个商品…
此次生产了255个商品,还剩余619个商品…
此次消费了89个商品,还剩余530个商品…
此次生产了264个商品,还剩余794个商品…
此次消费了221个商品,还剩余573个商品…
此次生产了104个商品,还剩余677个商品…
此次消费了81个商品,还剩余596个商品…
此次生产了37个商品,还剩余633个商品…
此次消费了94个商品,还剩余539个商品…
此次生产了84个商品,还剩余623个商品…
此次消费了561个商品,还剩余62个商品…
此次生产了664个商品,还剩余726个商品…
此次消费了116个商品,还剩余610个商品…
此次生产了50个商品,还剩余660个商品…
此次消费了354个商品,还剩余306个商品…
此次生产了182个商品,还剩余488个商品…
此次消费了274个商品,还剩余214个商品…
此次生产了425个商品,还剩余639个商品…
此次消费了74个商品,还剩余565个商品…
此次生产了279个商品,还剩余844个商品…
此次消费了498个商品,还剩余346个商品…
此次生产了138个商品,还剩余484个商品…
此次消费了372个商品,还剩余112个商品…
此次生产了834个商品,还剩余946个商品…
此次消费了268个商品,还剩余678个商品…
此次生产了263个商品,还剩余941个商品…
此次消费了368个商品,还剩余573个商品…
此次生产了71个商品,还剩余644个商品…
此次消费了464个商品,还剩余180个商品…
此次生产了212个商品,还剩余392个商品…
此次消费了184个商品,还剩余208个商品…
此次生产了564个商品,还剩余772个商品…
此次消费了358个商品,还剩余414个商品…
此次生产了398个商品,还剩余812个商品…
此次消费了633个商品,还剩余179个商品…
此次生产了415个商品,还剩余594个商品…
此次消费了501个商品,还剩余93个商品…
此次生产了603个商品,还剩余696个商品…
此次消费了242个商品,还剩余454个商品…
此次生产了413个商品,还剩余867个商品…
此次消费了107个商品,还剩余760个商品…
此次生产了158个商品,还剩余918个商品…
此次消费了463个商品,还剩余455个商品…
此次生产了147个商品,还剩余602个商品…
此次消费了303个商品,还剩余299个商品…
此次生产了514个商品,还剩余813个商品…
此次消费了404个商品,还剩余409个商品…
此次生产了554个商品,还剩余963个商品…
此次消费了380个商品,还剩余583个商品…
此次生产了397个商品,还剩余980个商品…
此次消费了695个商品,还剩余285个商品…
此次生产了455个商品,还剩余740个商品…
此次消费了302个商品,还剩余438个商品…
此次生产了167个商品,还剩余605个商品…
此次消费了95个商品,还剩余510个商品…
此次生产了475个商品,还剩余985个商品…
此次消费了954个商品,还剩余31个商品…
此次生产了672个商品,还剩余703个商品…

代码图:
等待唤醒机制------模拟线程生产和消费过程_第2张图片等待唤醒机制------模拟线程生产和消费过程_第3张图片等待唤醒机制------模拟线程生产和消费过程_第4张图片等待唤醒机制------模拟线程生产和消费过程_第5张图片输出:
等待唤醒机制------模拟线程生产和消费过程_第6张图片

你可能感兴趣的:(线程,API)