当前位置:首页 > 开发 > 编程语言 > Java > 正文

java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待

发表于: 2012-04-14   作者:bylijinnan   来源:转载   浏览:
摘要: public class PC { /** * 题目:生产者-消费者。 * 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。 */ private static final Integer[] val=new Integer[10]; private static

public class PC {

	/**
	 * 题目:生产者-消费者。
	 * 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
	 */
	
	private static final Integer[] val=new Integer[10];
	private static int size=0;
	private static final int MAX_SIZE=10;
	
	public static void main(String[] args)  {
		PC pc=new PC();
		new Thread(pc.new P()).start();
		new Thread(pc.new C()).start();
	}

	public synchronized void consume(){
			while(size<=0){
				try {
					System.out.println(size+"- consume wait");
					wait();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			val[--size]=0;
			notifyAll();
			System.out.println("successful consume and now size="+size);
	}
	
	public  synchronized void produce(int value){ 
			while(size==MAX_SIZE){
				try {
					System.out.println(size+"- produce wait");
					wait();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			val[size++]=value;
			notifyAll();
			System.out.println("successful produce and now size="+size);
	}
	
	class P implements Runnable{
		public void run(){
			while(true)produce(1000);
		}
	}
	
	class C implements Runnable{
		public void run(){
			while(true)consume();
		}
	}
	
}

java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号