java生产者与消费者的线程同步

package com.xue.ssm;public class Ck {    public static void main(String[] args) {        Ck ck = new Ck();        Thread sc = new Thread(new Sc(ck));        Thread xf = new Thread(new Xf(ck));        sc.start();        xf.start();    }    private char[] rb new char[10];    int wp ;    public synchronized void shengchan(char aa){        //如果物品装满仓库,就等待        while(wp == rb.length){            try {                this.wait();            }catch (Exception e){}        }        this.notify();//唤醒另一个消费线程,消费        rb[wp] = aa;        ++wp;        System.out.println("生产线程生产第"+wp+"个物品,产品是:"+aa);    }    public synchronized void xiaofei(){        char aa;        //如果仓库为0,就等待让其生产        while (wp == 0){            try {                this.wait();            } catch (Exception e) {                e.printStackTrace();            }        }        this.notify();//唤醒另一个线程        aa = rb[wp-1];        System.out.println("消费第"+wp+"个物品,名字是"+aa);        --wp;    }}class Sc implements  Runnable{    private Ck ck null;    public Sc(Ck ck ){     this.ck = ck;    }    @Override    public void run() {        char aa;        for(int i = ;i<26 ;i++){            aa = (char)('A'+i);            ck.shengchan(aa);        }    }}class Xf implements Runnable{    private Ck ck null;    public Xf(Ck ck ){        this.ck = ck;    }    @Override    public void run() {        for(int i = ;i<26 ;i++){            ck.xiaofei();        }    }}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值