package cn.lnu.thread.newInfo;
public class ProducerConsumerDemo2 {
/**JDK1.5
*����˶������߶������ߵ�Ч�ʵ�������
*ʹ����JDK1.5 java.util.concurrent.locks���еĶ���
*Lock�ӿڣ����ij��ֱ�synchronized�и���IJ�����
* lock():��ȡ��
* unlock():�ͷ���
*ͬ����������ͬ������������������ʽ�ġ�
*JDK1.5 Lock�ӿڣ�������������˼�룬����������װ����һ�������ṩ�˶�������ʾ������
*Lock�ӿھ���ͬ�������
*1���������е�1.4ͬ������Ϊlock�ӿڵ���ʽ
*2,�滻��֮������ʧ���ˣ���Ϊwaitû����ͬ������û����������ͬ������
*ͬ�������ˣ��������Ѿ����������������Lock���͵Ķ���
*��ô���������ļ������������Dz���Ҳ�����ˣ�����ר�ź�Lock�������İļ����������𣬴Ӷ�����֮ǰ��wait��motify��notifyAll
*����api,Condition�ӿ������Object�еļ�����������
*��ǰ������������װ��ÿ�������У����ڽ�������������װ����Condition������
*��������await,signal signalAll
*
*����������Condition�����Lock����
*����ͨ��Lock�ӿڵ�newCondition()�������
*�����������ɣ�һ�������˱�����Ч�����ɵ���
*���Դ�������lock���ļ����������������������������������ڻ��ѶԷ����������ỽ�ѱ����Ӷ������Ч�����⡣
*/
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();
}
}