生产者-消费者模型

生产者、消费者 各占一个Message对象

import org.omg.PortableServer.THREAD_POLICY_ID;

class Producter implements Runnable{
    private Message msg;

    public Producter(Message msg) {
        this.msg = msg;
    }

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
           if(i%2==0){
               this.msg.set("曹文文","大帅哥");
               try {
                   Thread.sleep(100);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }else{
                this.msg.set("王莽","小帅哥");
           }
        }
    }
}
class Consumer implements Runnable{
    private Message msg;

    public Consumer(Message msg) {
        this.msg = msg;
    }

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(this.msg.get());
        }
    }
}
class Message{
    private String title;
    private String content;
    public boolean flag=false;//可以生产

    public synchronized void  set(String title,String content){
        if(flag==true){
            try {
                super.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        this.title=title;
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        this.content=content;
        flag=true;
        super.notify();
    }

    public synchronized String get(){
        if(flag==false){
            try {
                super.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        flag=false;
        super.notify();
        return this.title+"-"+this.content;

    }
}
public class Main {
    public static void main(String[] args) {
        Message msg = new Message();
        new Thread(new Producter(msg)).start();
        new Thread(new Consumer(msg)).start();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值