Почему был назван метод 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() тоже неплохо.