public synchronized void sell() //每个class也有一个锁,是这个class所对应的class对象的锁(监视器)
{
if(tickets>0)
{
try
{
Thread.sleep(1);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("sell "+Thread.currentThread().getName()+" sell tickets:"+tickets);
tickets--;
}
}
}
————————————————————————————————————————
———————————TestWN.java————————————————————
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;
}