Duas maneiras de personalizar tópicos
Personalize uma classe de implementação de interface executável e, em seguida, construa um thread, ou seja, passe uma classe de interface executável para o thread.
Novo thread ou escreva uma subclasse de thread para substituir seu método de execução. (novo tópico A e substituição do método de execução é na verdade uma maneira da classe interna anônima)
Código de amostra
public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {System.out.println("create thread by passing a runnable target !");}}).start();new Thread(){@Overridepublic void run() {System.out.println("create thread by Override run method !");};}.começar();}Os métodos acima mencionados para a construção de encadeamentos de 1 e 2 são projetados com objetos de classe anônimos devido ao método de escrita de código. As seguintes instruções auxiliares são feitas agora:
1. Para o primeiro parágrafo, passei diretamente em uma instância runnável anônima. Você pode personalizar uma instância executável e, em seguida, obter threads na forma de novo thread (executável);
2. Para o segundo parágrafo, você pode definir especificamente uma classe para estender a classe base do thread e, em seguida, novo esta nova classe de thread.
3. Para esses dois segmentos, crie objetos de classe anônima diretamente com o novo thread. Você pode definir um Thread1 e Thread2 variável e, em seguida, usar thread1.start () thread2.start () para iniciar o thread;
Análise do código -fonte
Qual é a diferença entre esses dois métodos? O efeito final dos dois é o mesmo. No nível do código -fonte, o método de execução padrão do thread (se não for substituído) é o método de execução que chama o destino (o destino não está vazio). O Target é a classe de interface executável que passamos.
public sincronizado void start () {if (threadStatus! = 0) lançar novo ilegalthreadStateException (); group.add (this); boolean iniciado = false; try {start0 (); iniciado = true;} finalmente {try {if (! Iniciante) {(group.ThreadStartFailed (};};O início do thread acabará por ligar para o Native Start0, o que fará com que a máquina virtual da JVM chama o método de execução do Thread.
public void run () {if (Target! = null) {Target.run ();}}Aqui o alvo é um objeto executável no thread
alvo privado executável;
Resumir
O método de execução de reescrever thread é o método de execução executado pelo thread ao iniciar.
Ao passar o Runnable, o thread executa o método de execução padrão ao iniciar. O método RUN chamará o destino passado e chamará o método de execução do alvo.
O efeito de ambos é o mesmo, aqui é apenas para nos ajudar a ver as diferenças nos detalhes do código.
O acima exposto é uma análise abrangente dos métodos de início e corrida nos threads java introduzidos pelo editor. Espero que seja útil para todos. Se você quiser saber mais, preste atenção ao wulin.com!