Existem duas maneiras de criar threads em Java: usando a classe Thread e usando a interface Runnable. Ao usar a interface Runnable, você precisa criar uma instância Thread. Portanto, quer você crie um thread por meio da classe Thread ou da interface Runnable, você deve criar uma instância da classe Thread ou de sua subclasse. O construtor da classe Thread foi sobrecarregado oito vezes. O construtor é o seguinte:
Uma instância de uma classe que implementa a interface Runnable. Deve-se observar que a classe Thread também implementa a interface Runnable, portanto, instâncias de classes herdadas da classe Thread também podem ser passadas para este construtor como alvos.
Nome da sequência
O nome do tópico. Este nome pode ser definido através do método setName da classe Thread após a criação de uma instância Thread. Se o nome do thread não estiver definido, o thread usará o nome do thread padrão: Thread-N é a ordem na qual o thread é criado e é um número inteiro positivo não repetido.
Grupo ThreadGroup
O grupo de threads ao qual pertence o thread criado atualmente. Se nenhum grupo de encadeamentos for especificado, todos os encadeamentos serão adicionados a um grupo de encadeamentos padrão. Detalhes sobre grupos de threads serão discutidos em detalhes em capítulos posteriores.
pilha longaSize
O tamanho da pilha de threads Esse valor geralmente é um múltiplo inteiro da página da CPU. Por exemplo, o tamanho da página x86 é 4 KB. Na plataforma x86, o tamanho da pilha de threads padrão é 12 KB.
Uma classe Java comum pode se tornar uma classe thread, desde que herde da classe Thread. E o código do thread pode ser executado através do método start da classe Thread. Embora as subclasses da classe Thread possam ser instanciadas diretamente, o método run da classe Thread deve ser substituído na subclasse para realmente executar o código do thread. O código a seguir fornece um exemplo de uso da classe Thread para criar um thread:
classe pública Thread1 estende Thread
{
execução de vazio público ()
{
System.out.println(this.getName());
}
público estático void principal(String[] args)
{
System.out.println(Thread.currentThread().getName());
Thread1 thread1 = new Thread1();
Tópico1 Tópico2 = novo Tópico1();
thread1.start();
thread2.start();
}
}
Os resultados da execução do código acima são os seguintes:
Nota: Qualquer programa Java deve ter um thread principal. Geralmente, o nome deste thread principal é main. Somente criando outros threads no programa ele pode ser considerado um verdadeiro programa multithread. Em outras palavras, um programa multithread deve ter mais de um thread.
A classe Thread possui um construtor sobrecarregado que pode definir o nome do thread. Além de usar o método construtor para definir o nome do thread ao criar um thread, você também pode usar o método setName da classe Thread para modificar o nome do thread. Para definir o nome do thread por meio do construtor da classe Thread, você deve usar o construtor público Thread (String name) da classe Thread na subclasse de Thread. Portanto, você também deve adicionar um thread para passar na subclasse de Thread. Construtor de nome. O código a seguir fornece um exemplo de configuração do nome do thread:
classe pública Thread2 estende Thread
{
String privada quem;
execução de vazio público ()
{
System.out.println(who + ":" + this.getName());
}
público Thread2(String quem)
{
super();
isto.quem = quem;
}
public Thread2 (String quem, String nome)
{
super(nome);
isto.quem = quem;
}
público estático void principal(String[] args)
{
Thread2 thread1 = new Thread2 ("thread1", "MyThread1");
Thread2 thread2 = novo Thread2 ("thread2");
Tópico2 Tópico3 = novo Tópico2 ("thread3");
thread2.setName("MeuThread2");
thread1.start();
thread2.start();
thread3.start();
}
Linha 011: amostra pública2_2 (String quem)
Este construtor possui um parâmetro: who. Este parâmetro é usado para identificar o thread criado atualmente. O construtor padrão do Thread, public Thread(), ainda é chamado neste construtor.
Linha 016: public sample2_2 (String quem, String nome)
O who neste construtor tem o mesmo significado que o who no primeiro construtor, e o parâmetro name é o nome do thread. Neste construtor, é chamado o construtor público Thread (String name) da classe Thread, que é super (nome) na linha 018.
Três threads são estabelecidos no método principal: thread1, thread2 e thread3. Entre eles, thread1 define o nome do thread por meio do método de construção, thread2 modifica o nome do thread por meio do método setName e thread3 não define o nome do thread.
Os resultados da execução são os seguintes:
Nota: Você pode usar setName para definir o nome do thread antes e depois de chamar o método start. No entanto, usar setName para modificar o nome do thread após chamar o método start causará incerteza, o que significa que setName não pode ser executado até que o método run seja. executado. If Se você quiser usar o nome do thread no método run, ocorrerá um fenômeno que, embora o método setName seja chamado, o nome do thread não será modificado.
O método start da classe Thread não pode ser chamado várias vezes. Por exemplo, o método thread1.start() não pode ser chamado duas vezes. Caso contrário, uma IllegalThreadStateException será lançada.