package cn.lnu.thread.info; public class ProducerConsumerDemo2 { /**JDK1.4 * �������ߣ�������������,�������������ѻ�����������������,��ʹ��ѭ���жϱ�ǣ����ʹ��notifyAll()ȫ������ * ���߳�ͨ��,ͬ��+�ȴ�/���ѻ��� * * ����1,�� * �ظ������ظ����ѡ� * ԭ��:�������ӵķ��������ֱ����ѵ����ɳ�û����ȥ�жϱ��flag�Ϳ�ʼ����(������������)�ˡ� * �������ظ������������ѵIJ����� * ������Ǿ��DZ����ѵ��̱߳����жϱ�ǣ�ʹ��whileѭ���жϱ�� * * ����2: * �����ˣ����е��̶߳����ڶ���״̬ * ԭ��:���߳��ڻ���ʱ����һ�λ����˱����̣߳��������߳�ѭ���жϱ��flag,�ּ����ȴ����Ӷ��������е��̶߳��ȴ��� * * �����ϣ������������ѶԷ��߳̾Ϳ��Խ�� * ����ʹ��notifyAll()���� * �Dz���ȫ���������ǵģ����б����̣߳����жԷ��̣߳����DZ����Ѻ󣬻��жϱ�Ǽ����ȴ��������Է������߳̿���ִ����. * * �������Ѿ�ʵ���˶�����-������ * ������ЩС���⣬Ч���е�ͣ���ΪnotifyAll()��Ҳ�����˱��������˲���Ҫ���ж� */ public static void main(String[] args) { //1��������Դ Resource2 r2=new Resource2(); //2,���������������������� Producer2 p=new Producer2(r2); Consumer2 c=new Consumer2(r2); //3�������߳� Thread t1=new Thread(p); Thread t2=new Thread(p); Thread t3=new Thread(c); Thread t4=new Thread(c); t1.start(); t2.start(); t3.start(); t4.start(); } }