栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

(java)生产者-消费者问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(java)生产者-消费者问题

package com.wzc.test;
//生产者消费者问题
public class Test03 {
    public static void main(String[] args) {
      Clerk clerk=new Clerk();
      Costumer c1=new Costumer(clerk);
      Procedure p1=new Procedure(clerk);
      c1.setName("消费者1号");
      p1.setName("生产者1号");
      c1.start();
      p1.start();
    }
}
class Costumer extends Thread{
    private  Clerk clerk;

    public Costumer(Clerk clerk) {
        this.clerk = clerk;
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"开始消费........");
        while(true){
            clerk.ConsumerP();
        }
    }
}
class Procedure extends Thread{
    private Clerk clerk;

    public Procedure(Clerk clerk) {
        this.clerk = clerk;
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+"开始生产........");
        while(true){
            clerk.Production();
        }
    }
}
class Clerk{
    private  static int num=0;
    public synchronized  void Production(){
        if(num<20){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            num++;
            System.out.println(Thread.currentThread().getName()+"正在生产第"+num+"个产品");
            notify();
        }else{
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }


    }
    public synchronized void ConsumerP(){
        if(num>0){
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+"正在消费第"+num+"个产品");
            num--;
            notify();
        }else{
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号