先上代码
-
class Test
-
{
-
public static void main(String []args)
-
{
-
Queue q=new Queue();
-
Producer p=new Producer(q);
-
Consumer c=new Consumer(q);
-
p.start();
-
c.start();
-
}
-
}
-
-
class Producer extends Thread
-
{
-
Queue q;
-
Producer(Queue q)
-
{
-
this.q=q;
-
}
-
public void run()
-
{
-
for(int i=0;i<10;i++)
-
{
-
q.put(i);
-
System.out.println("Producer put"+i);
-
}
-
}
-
}
-
class Consumer extends Thread
-
{
-
Queue q;
-
Consumer(Queue q)
-
{
-
this.q=q;
-
}
-
public void run()
-
{
-
while(true)
-
{
-
System.out.println("Consumer get"+q.get());
-
}
-
}
-
}
-
-
class Queue
-
{
-
int value;
-
boolean bFull=false;
-
public synchronized void put(int i)
-
{
-
-
if(!bFull)
-
{
-
value=i;
-
bFull=true;
-
notify();
-
}
-
try{
-
wait();
-
}
-
catch(Exception e)
-
{}
-
}
-
public synchronized int get()
-
{
-
if(!bFull)
-
{
-
try
-
{
-
wait();
-
}
-
catch(Exception e)
-
{
-
-
}
-
}
-
bFull=false;
-
notify();
-
return value;
-
}
-
}
运行结果
-
Producer put0
-
Consumer get0
-
Consumer get1
-
Producer put1
-
Consumer get2
-
Producer put2
-
Consumer get3
-
Producer put3
-
Consumer get4
-
Producer put4
-
Consumer get5
-
Producer put5
-
Consumer get6
-
Producer put6
-
Consumer get7
-
Producer put7
-
Consumer get8
-
Producer put8
-
Consumer get9
-
Producer put9
版权声明:本文为博主原创文章,未经博主允许不得转载。
Java经典线程同步问题------生产者与消费者
原文:http://blog.csdn.net/u013948191/article/details/46788223