Estou implementando o uso de threads extendendo a classe thread....
minha duvida e o seguinte
quero passar para cada thread um vetor....
de forma que cada vetor será manipulado em uma thread diferente......
estou na duvida de como passar o parametro...
se eu implementar desta forma da certo??se nao como devo fazer???
// Atenção: dentro da medida do possível, nunca estenda Thread, e sim// implemente Runnable.classThreadExemploimplementsRunnable{privateStringnomePais;privateString[]nomesPresidente;publicThreadExemplo(StringnomePais_,String[]nomesPresidente_){nomePais=nomePais_;nomesPresidente=nomesPresidente_;}publicvoidrun(){System.out.println("O(A) presidente de "+nomePais+" é: ");for(inti=0;i<nomesPresidente.length;++i)System.out.print(nomesPresidente[i]+" ");System.out.println();}}classVariasThreads{publicstaticvoidmain(String[]args)throwsInterruptedException{String[]teste1={"Michelle","Bachelet"};String[]teste2={"Cristina","Elisabet","Fernández","de","Kirchner"};String[]teste3={"Luiz","Inácio","Lula","da","Silva"};String[]teste4={"Hugo","Rafael","Chávez","Frías"};System.out.println("Iremos imprimir os nomes dos presidentes, talvez um pouco embaralhados");// Criando as threads e passando os parâmetrosThreadthread1=newThread(newThreadExemplo("Chile",teste1));Threadthread2=newThread(newThreadExemplo("Argentina",teste2));Threadthread3=newThread(newThreadExemplo("Brasil",teste3));Threadthread4=newThread(newThreadExemplo("Venezuela",teste4));// Iniciando as threadsthread1.start();thread2.start();thread3.start();thread4.start();// Esperando todas as threads serem processadasthread1.join();thread2.join();thread3.join();thread4.join();// Por fim:System.out.println("Todos os presidentes foram impressos.");}}
T
thingol
Note que, como não pus nenhuma sincronização nas threads, os resultados são um pouco embaralhados de propósito. Um exemplo de saída:
Só para te ajudar a entender o que o Thingol fez, vou tentar explicar o que você precisaria ajustar no seu código para fazer o que você queria…
Você não passa os argumentos no método run… se você precisar passar algum valor a ser utilizado em uma Thread, você precisa informar esse valor no construtor.
Você deve implementar o método run() - note que não recebe parâmetros - e colocar o código que será executado quando a thread for iniciada.
Para iniciar a Thread, você não chama o método run(), você deve chamar o método start().
Sabendo isso, veja como fazer na prática no código que Thingol mostrou.