高手帮忙看这个程序写的有没有问题
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) 
 		{ 
 			e.printStackTrace(); 
 		}  			 
 	} 
 	public   synchronized   int   get() 
 	{ 
 		if(!bFull) 
 		{ 
 			try 
 			{ 
 				wait(); 
 			} 
 			catch(Exception   e) 
 			{ 
 				e.printStackTrace(); 
 			} 
 		} 
 		bFull=false; 
 		notify(); 
 		return   value; 
 	} 
 }
------解决方案--------------------怎么会永远得不到执行???????????????????????
------解决方案--------------------不是多余 
 你看synchronized 这个关键字就知道可能有多线程的原因了   
 另外一个线程可能会更改这个值 
 所以这里就要判断了