Adicione o código primeiro
Crie um novo tópico, o código é o seguinte:
pacote com.thread.test; public classe mythread estende thread {name de sequência privada; public mythread (nome da string) {this.name = name; } @Override public void run () {for (int i = 0; i <100; i ++) {System.out.println (nome+"["+i+"]"); } super.run (); }}Em seguida, crie uma nova classe de teste, o código é o seguinte:
pacote com.thread.test;/** 0-50 Executa o tópico principal, 50-100 executa o fio A e o thread principal continuará sendo executado após o thread A. t.start (); for (int i = 0; i <100; i ++) {if (i> 50) {tente {t.join (); } catch (interruptedException e) {e.printStackTrace (); }} System.out.println ("thread principal"+"["+i+"]"); }}}A seguir, é apresentada uma explicação do método de junção no thread na API Java Platform SE8:
A junção do vazio final pública (Long Millis) lança interruptedExceptionWaits na maioria dos milis milhões de milissegundos para que esse tópico morra. Um tempo limite de 0 significa esperar para sempre. Esta implementação usa um loop disso. Como um thread termina o método this.NotifyAll é chamado. Recomenda -se que os aplicativos não usem espera, notifique ou notifique todos em instâncias de thread.parameters: Millis - O tempo de esperar em milhões de segundos lança: se algum fio ilegalArgumentException - se o valor de Millis for negativo interrompException - se algum encadeamento tiver interrompido o encadeamento atual. O status interrompido do encadeamento atual é limpo quando essa exceção é lançada.
Adicione o código primeiro
Crie um novo tópico, o código é o seguinte:
pacote com.thread.test; public classe mythread estende thread {name de sequência privada; public mythread (nome da string) {this.name = name; } @Override public void run () {for (int i = 0; i <100; i ++) {System.out.println (nome+"["+i+"]"); } super.run (); }}Em seguida, crie uma nova classe de teste, o código é o seguinte:
pacote com.thread.test;/** 0-50 Executa o tópico principal, 50-100 executa o fio A e o thread principal continuará sendo executado após o thread A. t.start (); for (int i = 0; i <100; i ++) {if (i> 50) {tente {t.join (); } catch (interruptedException e) {e.printStackTrace (); }} System.out.println ("thread principal"+"["+i+"]"); }}}A seguir, é apresentada uma explicação do método de junção no thread na API Java Platform SE8:
A junção do vazio final pública (Long Millis) lança interruptedExceptionWaits na maioria dos milis milhões de milissegundos para que esse tópico morra. Um tempo limite de 0 significa esperar para sempre. Esta implementação usa um loop disso. Como um thread termina o método this.NotifyAll é chamado. Recomenda -se que os aplicativos não usem espera, notifique ou notifique todos em instâncias de thread.parameters: Millis - O tempo de esperar em milhões de segundos lança: se algum fio ilegalArgumentException - se o valor de Millis for negativo interrompException - se algum encadeamento tiver interrompido o encadeamento atual. O status interrompido do encadeamento atual é limpo quando essa exceção é lançada.
Meu próprio entendimento é que ele entrará com força no thread usando o método de junção e outros threads aguardam até que o thread seja totalmente executado antes de entrar.