Почему был назван метод java.lang.Thread.join()?

Кто-нибудь знает, почему член метода join() java.lang.Thread был назван так? Его javadoc:

Ожидает, что этот поток погибнет.

Когда соединение вызывается в потоковом потоке, поток ожидает, пока другой умрет и продолжит выполнение. Предположительно вызывающий поток тоже умрет, но все же неясно, почему автор использовал это имя.

Ответы

Ответ 1

Это общее имя в потоковой передаче - это не похоже на то, что Java первым использовал его. (Например, что используется pthreads.)

Я думаю, вы могли бы представить себе, как два человека гуляют - вы присоединяетесь к другому и ходите с ними, пока не закончите, прежде чем вернуться к тому, что делаете. Подобная аналогия, возможно, была изначальной причиной, хотя я согласен с ней не в том, что она интуитивно понятна.

Ответ 2

Он назвал этот путь, потому что вы в основном заявляете, что вызывающий поток выполнения будет ждать, чтобы присоединиться к данному состоянию выполнения. Он также назвал объединение в posix и многие другие пакеты потоковой передачи.

После этого вызова для присоединения возвращает (если он не был прерван), два потока выполнения в основном работают вместе с этой точкой (с тем потоком, получающим возвращаемое значение потока с завершенным завершением).

Ответ 3

Это связано с параллельным программным моделированием, когда поток управления разделяется на параллельные потоки. Позже два потока исполнения снова присоединятся.

Также waitToDie() был, вероятно, a) слишком длинным и b) слишком болезненным.

Ответ 4

ну... это действительно не правильно, но я подумал о "комнате ожидания" (на самом деле это не очередь с определенным расписанием как FIFO, HRRN или такой). когда поток не может продолжаться, и ему нужно подождать, пока какой-нибудь другой поток закончится, он просто присоединяется к ребятам (aka threads) в зале ожидания, чтобы активировать следующий...

Ответ 5

Поскольку вы ждете другого потока выполнения (т.е. того, с которым вы вызываете соединение), чтобы присоединиться (например, die) к текущему потоку (то есть вызывающему).

Вызывающий поток не умирает: он просто ждет другого потока.

Ответ 6

Это терминология, которая широко используется (кроме Java). Я воспринимаю это как своего рода ассоциирование Thread с другим в некотором роде. Я думаю, что Thread.Associate() может быть лучшим вариантом, но Join() тоже неплохо.