Problema com sincronização de threads

eu estou fazendo uma aplicação que simula o funcionamento de um SO, que mostra alguns processos em uma tabela como se fosse um gerenciador de processos, soh q soh um processo funciona por vez…processos são criados…processos terminam…

o problema eh que esta ocorrendo um problema de sincronização, tem hora que algum processo eh terminado
depois que se pega o numero de linhas da tabela, e se por acaso o processo a ser rodado é o ultimo o programa trava…
o codigo esta abaixo do escalonador, e do thread q controla a vida dos processos…
a variavel inteira "sinc"eu tentei utilizar para sincronizar essas threads mas não deu certo…

public class escalonador extends Thread 
{

	Processo[] processo;
	JTable tab;
	int sinc;
	public escalonador(Processo[] p,JTable t,int s) 
	{
		processo=p;
		tab=t;
		sinc=s;
		this.start();
	}
	public void run() 
	{
		int a,aux,atual=0;
		Random r=new Random();
		while(true)
		{
			while(sinc!=0);
			sinc++;
			a=((DefaultTableModel)tab.getModel()).getRowCount();
			if(a!=0)
			{
				aux=r.nextInt(a);
				processo[atual].thread.suspend();
				((DefaultTableModel)tab.getModel()).setValueAt("em espera",atual,3);
				((DefaultTableModel)tab.getModel()).setValueAt("em execução",aux,3);
				processo[aux].thread.resume();
				atual=aux;
				sinc=0;
				try 
				{
					this.sleep(4000);
				}
				catch (InterruptedException ex) 
				{
					ex.printStackTrace();


				}

			}
			sinc=0;
			
		}
	}
}


public class controla extends Thread{
    
    Processo a;
    Principal p=new Principal();
    int sinc;
    public controla(Processo q,int s) {
        a=q;
        sinc=s;
        this.start();
    }

    public void run() {
    	 Random r=new Random();
        int cont=10;
        while(cont>0)
        { cont--;
            try {
                this.sleep(10000+r.nextInt(10000));
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
        while(sinc!=0);
        sinc++;
        p.remove(a.nome,p.tab.tabela);
        sinc=0;
        a.thread.suspend();
        a.frame.setVisible(false);
    }

}

pessoal me desculpem mas eu naum sei colocar codigo como vcs fazem…
se alguem puder me ajudar a resolver esse problema…

  1. Você está vendo uma barra de ferramentas sob o título:

B I U Quote Code List Img URL Google Youtube Flash WMV

?

Você só precisaria ter clicado em {CODE} no começo e no fim do seu código.

  1. Nunca vi ninguém usando essas APIs de threads “suspend” e “resume”.

Mesmo com C/C++ nunca se usam as APIs do Windows ou do Unix equivalentes a “suspend” e “resume”, exceto na inicialização de threads (quando você cria as threads suspensas e depois de terminar a inicialização, você as inicia com “resume”).

Elas são deprecated (marcadas para não serem usadas) , porque é muito fácil você fazer algo que trave seu programa. Provavelmente elas nem funcionam direito !
Procure outra maneira de controlar suas threads.