Threads produzindo e consumindo em um vetor! -Problema!

Tenho que fazer threads que ponham ou retirem um valor no vetor, de maneira sincronizada, mas esse meu código aí está furado! As threads não alternam! Tenho dúvidas quanto ao posicionameto de wait() e notify()! Será que alguém pode me ajudar?



public class ProduzConsome extends Thread 
{

	private static String buffer1[];
//	private static String buffer2[];
	private static int cont = 0;
	private static String id;
	private static  boolean cond=true;
	
	public ProduzConsome(String id, String[] buffer1)
	{
		this.id =id;
		this.buffer1=buffer1;
		
	}
	
    protected synchronized void produz()
    {
 	   
    
    	
    	for(int i=0;i<buffer1.length;i++)
    	{
    		
    		buffer1[i]= "A";
    		cont++;
    		System.out.println(cont);
    		
    	}
    	
    } 	
    
    protected synchronized void consome()
    {
    /*	try {
			sleep(6000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}   */
    
    	
    	for(int i=0;i<buffer1.length;i++)
    	{
    		 
    		buffer1[i]= null;
    		cont--;
    	
    		System.out.println(cont);
    	}
   
     }
    
    public void run()
    {
    	if (id =="1")
    	{produz();}
    	if (id =="2")
    	{consome();}    	
    		
    }
    
    	
}
	

Qualquer ajuda é bem vinda!