生产消费问题

class Ck{
	private char[] rl=new char[8];
	private int up=0;

	public synchronized void shengchan(char aa){
		while(up==rl.length){
			try{
				this.wait();
			}
			catch(Exception e){

			}
		}
		this.notify();//叫醒另一个线程,是在当前线程处于就绪状态的前提下
		rl[up]=aa;
		++up;
		System.out.println("生产线程正在生产第"+up+"个产品,该产品是:"+aa);
	}

	public synchronized	void xiaofei(){
		char aa;
		while(up==0){
			try{
				this.wait();
			}
			catch(Exception e){

			}
		}
		this.notify();
		aa=rl[up-1];//
		System.out.println("消费线程正在消费低第"+up+"个产品,该产品是"+aa);
        --up;
	}
}

class Sc implements Runnable{
	private Ck xc=null;
	public Sc(Ck xc){
		this.xc=xc;
	}
	public void run(){
		char aa;
		for(int i=0;i<26;i++){
			aa=(char)('A'+i);
			xc.shengchan(aa);
		}
	}
	
}
class Xf implements Runnable{
	private Ck xc=null;
	public Xf(Ck xc){
		this.xc=xc;
	}
	public void run(){
		for(int i=0;i<26;i++){
			xc.xiaofei();
		}
	}
}

public class Test{
	public static void main(String[] args){
        Ck ck=new Ck();
        
        Sc sc=new Sc(ck);
        Xf xf=new Xf(ck);
        
        Thread xc1=new Thread(sc);
        xc1.start();
        
        Thread xc2=new Thread(xf);
        xc2.start();
	}
}

猜你喜欢

转载自blog.csdn.net/WYJ____/article/details/82596321
今日推荐