Uso de thread

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???


[code]public class SimpleThread extends Thread
{
public SimpleThread(String str) {
super(str);
}
public void run(String[] vetor)
{
…codigo…
}

}[/code]


ai no main apenas utilizo

        SimpleThread thread1 = new SimpleThread("Thread 1");
        SimpleThread thread2 = new SimpleThread("Thread 2");
        SimpleThread thread3 = new SimpleThread("Thread 3");
        SimpleThread thread4 = new SimpleThread("Thread 4");



       thread1.run(String[] vetor1);
       thread2.run(String[] vetor2);
       thread3.run(String[] vetor3);
       thread4.run(String[] vetor4);

???

Aham, o correto seria isto aqui:


// Atenção: dentro da medida do possível, nunca estenda Thread, e sim
// implemente Runnable.

class ThreadExemplo implements Runnable {
    private String nomePais;
    private String[] nomesPresidente;

    public ThreadExemplo (String nomePais_, String[] nomesPresidente_) {
        nomePais = nomePais_;
        nomesPresidente = nomesPresidente_;
    }
    public void run () {
        System.out.println ("O(A) presidente de " + nomePais + " é: ");
        for (int i = 0; i < nomesPresidente.length; ++i) 
            System.out.print (nomesPresidente[i] + " ");
        System.out.println ();
    }
}

class VariasThreads {

    public static void main (String[] args) throws InterruptedException {
        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âmetros
        Thread thread1 = new Thread (new ThreadExemplo ("Chile", teste1));        
        Thread thread2 = new Thread (new ThreadExemplo ("Argentina", teste2));        
        Thread thread3 = new Thread (new ThreadExemplo ("Brasil", teste3));        
        Thread thread4 = new Thread (new ThreadExemplo ("Venezuela", teste4));        
        // Iniciando as threads
        thread1.start(); thread2.start(); thread3.start(); thread4.start();
        // Esperando todas as threads serem processadas
        thread1.join(); thread2.join(); thread3.join(); thread4.join();
        // Por fim:
        System.out.println ("Todos os presidentes foram impressos.");
    }
}

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:

O(A) presidente de Chile é:
Michelle O(A) presidente de Brasil é:
O(A) presidente de Argentina é:
Luiz Inácio Lula da Silva
Bachelet
O(A) presidente de Venezuela é:
Cristina Hugo Elisabet Rafael Fernández Chávez de Frías
Kirchner
Todos os presidentes foram impressos.

ou então:

Iremos imprimir os nomes dos presidentes, talvez um pouco embaralhados
O(A) presidente de Chile é:
Michelle O(A) presidente de Venezuela é:
O(A) presidente de Brasil é:
O(A) presidente de Argentina é:
Bachelet Cristina Luiz Hugo Inácio Elisabet
Fernández Lula Rafael da de Silva
Chávez Frías
Kirchner
Todos os presidentes foram impressos.

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…

  1. 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.
  2. 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.
  3. 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.