Domanda

Qualcuno sa perché il metodo join () membro di un java.lang.Thread sia stato chiamato così? Il suo javadoc è:

  

Aspetta che questa discussione muoia.

Quando viene chiamato join su un thread, il thread chiamante attende che l'altro muoia e continui l'esecuzione. Si suppone che anche il thread chiamante morirà, ma non è ancora chiaro perché l'autore abbia usato questo nome.

È stato utile?

Soluzione

È un nome comune nel threading - non è come se Java fosse il primo ad usarlo. (Ad esempio, è quello che pthreads usa anche.)

Suppongo che potresti immaginarlo come due persone che fanno una passeggiata - ti unisci all'altra e cammini con loro fino a quando non hai finito, prima di tornare a quello che stavi facendo. Quel ordinamento dell'analogia potrebbe essere stato il motivo originale, anche se sono d'accordo che non sia esattamente intuitivo.

Altri suggerimenti

È chiamato in questo modo perché sostanzialmente stai affermando che il thread di esecuzione chiamante attenderà di unire il dato stato di esecuzione. È anche chiamato join in posix e molti altri pacchetti di threading.

Dopo quella chiamata a join restituisce (a meno che non sia stata interrotta), i due thread di esecuzione stanno praticamente correndo insieme da quel punto (con quel thread che ottiene il valore di ritorno del thread ora terminato).

Ciò deriva dalla modellazione software simultanea quando il flusso di controllo si divide in thread simultanei. Più tardi, i due thread di esecuzione si uniranno nuovamente.

Anche waitToDie () era probabilmente a) troppo lungo eb) troppo morboso.

beh ... questo non è proprio corretto ma ho pensato a una "sala d'attesa" (in realtà non è una coda con una certa pianificazione come FIFO, HRRN o simili). quando un thread non può continuare e deve attendere qualche altro thread per finirlo, si unisce ai ragazzi (aka thread) nella sala d'attesa per essere attivi dopo ...

Perché stai aspettando un altro thread di esecuzione (ovvero quello su cui stai chiamando join) per unirti (cioè die) al thread corrente (cioè il call).

Il thread chiamante non muore: aspetta semplicemente che l'altro thread lo faccia.

Questa è una terminologia ampiamente utilizzata (anche al di fuori di Java). Lo prendo come una specie di Associare un thread con un altro in qualche modo. Penso che Thread.Associate () avrebbe potuto essere un'opzione migliore, ma Join () non è neanche male.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top