Pergunta

Alguém sabe por que o método join () membro de uma java.lang.Thread foi nomeado como esse? Sua javadoc é:

Waits para esta discussão para morrer.

Quando junção é chamado em algum segmento segmento de chamada está esperando o outro morrer e continuar a execução. Supostamente chamando segmento vai morrer também, mas ainda não está claro por que o autor usou este nome.

Foi útil?

Solução

É um nome comum no rosqueamento - não é como Java foi o primeiro a usá-lo. (Por exemplo, isso é o que pthreads usa também.)

Eu acho que você poderia imaginar como duas pessoas que tomam uma caminhada - você juntar o outro e caminhar com eles até que tenha terminado, antes de voltar para o que estava fazendo. Que tipo de analogia pode ter sido a razão original, embora eu concordo que não é exatamente intuitivo.

Outras dicas

É nomeado desta forma porque você está dizendo basicamente que o segmento chamado de execução vai esperar para se juntar determinado estado de execução. É também chamado participar posix e muitos outros pacotes de encadeamento.

Depois que a chamada para se juntar retornos (a menos que foi interrompido), os dois segmentos de execução são, basicamente, correndo juntos a partir desse ponto (com esse segmento recebendo o valor de retorno do fio agora terminada).

Isto deriva de modelagem de software concorrente quando o fluxo de divisões de controle para a threads simultâneos. Mais tarde, os dois segmentos de execução irá juntar-se novamente.

Além disso waitToDie() foi provavelmente a) muito tempo e b) também mórbida.

bem ... isso não é realmente correto, mas eu pensei de uma "sala de espera" (que na verdade não é um fila com uma certa programação como FIFO, HRRN ou tal). quando um segmento não pode continuar e necessidades que esperar em algum outro segmento concluir que apenas junta-se os caras (aka threads) na sala de espera manter-se activo seguinte ...

Porque você está esperando por outra thread de execução (ou seja, o que você está chamando juntar on) para juntar-se (isto é, morrer) para a corrente (ou seja, o chamado) fio.

O segmento de chamada não morre:. Ele simplesmente aguarda o outro segmento para fazê-lo

Esta é uma terminologia que é amplamente utilizado (fora Java também). Eu tomo isso como uma espécie de associação de um segmento com outro de alguma forma. Acho Thread.Associate () poderia ter sido uma melhor opção, mas join () não é ruim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top