RESOLVIDO - Threads incrementando o mesmo contador

[code] // PESSOAL, ESTOU COM A SEGUINTE DIFICULDADE:

public class Principal{

public static void main(String[] args){
	
	thread t1 = new thread();
	thread t2 = new thread();
	thread t3 = new thread();

	   t1.start();
	   t2.start();
	   t3.start();
}

}

public class thread extends Thread {

 public void run(){

     int cont =0;
     
        //Aqui cada thread realiza seu trabalho, em seguida incrementa seu contador:
     
     cont++;
	 
     System.out.println( "Valor do contador atualizado: " + cont);
  }

}[/code]

// No resultado apresentado no console cada thread imprime seu contador:

[color=blue]// Valor do contador atualizado: 1
// Valor do contador atualizado: 1
// Valor do contador atualizado: 1[/color]

// [color=red]ENTÃO A DÚVIDA:[/color] COMO FAZER PARA QUE AS TRÊS THREADS ATUALIZEM O MESMO CONTADOR?
// DE MODO A EXIBIR UM RESULTADO ÚNICO, OU SEJA: [color=blue] Valor do contador atualizado: 3[/color]
// Se não for possivel, como faço para somar os três contadores?

Ficarei agradecido pela ajuda !

abrçs !

Então, nesse caso é fácil, é só declarar a variável cont como static porque são 3 objetos Thread. Sendo assim todos os 3 objetos poderão acessa-lá (variacel).

[code]public class thread extends Thread {

 private static int cont; //é static
 
  public void run(){     
     System.out.println( "Valor do contador atualizado: " + cont);  
  }  

} [/code]

Outro jeito seria modificar seu código para que tivesse somente um destino ou seja um trabalho a ser executado (aquele código dentro do método run). Você criaria 3 trabalhadores (aqueles objetos Thread) como foi feito, e apenas um trabalho (método run). Desta forma os 3 trabalhadores disputariam pelo mesmo trabalho, sem precisar
declarar a variável cont como static.

[code]public class thread extends Thread {

 private int cont; // não static 
 
  public void run(){     
     System.out.println( "Valor do contador atualizado: " + cont);  
  }  

} [/code]

no método main:

[code]public static void main(String[] args){

    thread trabalho = new thread();

    thread trabalhador1 = new thread(trabalho);  
    thread trabalhador2 = new thread(trabalho);  
    thread trabalhador3 = new thread(trabalho);  

     t1.start();  
     t2.start();  
     t3.start();  
} [/code]

Por favor, ao postar tópicos, EVITE USAR SOMENTE LETRAS MAIÚSCULAS NO TÍTULO.
Também não é necessário dizer que está iniciando, se você já está postando no fórum de Java Básico.

Crie uma classe apenas para fazer a contagem.

public class Contador {

	private volatile int contagem; //volatile indica que haverá várias modificações

	public synchronized final int getContagem() { 
		return contagem;
	}

	public synchronized final void incrementa() {
		this.contagem++;
	}
	
}

Henrique.tenorio, Zaruck e ViniGodoy[color=red] [/color][size=18] [/size][size=12] [/size]

Só me resta agradecê-los pelas orientações !

Sucesso a todos !!!

Até mais ver !

Cara só uma dica, no titulo do tópico coloque RESOLVIDO - e a dúvida … Pois assim se alguém tiver a mesma dúvida que você ou similar futuramente pode-se guiar através do titulo do tópico.

Valeu.

RESOLVIDO - Threads, Dúvida básica.

Master, valeu pela dica !