Почему слово «соединение» используется для метода Thread.join ()? - PullRequest
0 голосов
/ 02 января 2019

Я начал проводить исследования, чтобы выяснить, почему слово «соединение» используется для метода Thread.join().Фактически, он ожидает окончания потока, в котором он вызывается, и приостанавливает основной поток, чтобы дождаться его, так что нечего присоединяться.Таким образом, его имя должно выглядеть примерно так:

  1. Thread.pauseCaller ();
  2. Thread.freezeCaller ();
  3. Thread.focusThread ();
  4. Thread.runBefore ();

Я нашел одно простое предложение после слишком большого исследования, которое говорит, что:

Thread.join(); имя происходит из концепциивызывающий поток, ожидающий, пока указанный поток не присоединится к it.

Я совершенно не могу понять это предложение выше и не смог понять фоновый контекст использования слова join для этого метода.Что означает слово «присоединиться» в этом контексте?Там нет ничего, чтобы присоединиться к чему-либо еще;вместо этого он просто приостанавливает вызывающий поток для ожидания потока, за которым следует join().Итак, кто-нибудь может сказать контекст использования join слова для этого метода?

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Присоединение - это общий термин, используемый в моделях параллелизма, который подразумевает, что два отдельных независимо работающих потока синхронизируются друг с другом, и один поток не будет продолжаться, пока другой не достигнет определенной точки соединения.Таким образом, 2 потока объединяют обратно в один.В Java это обычно происходит, когда другой поток завершает свою задачу.

Обратите внимание, что это может не совпадать в моделях, в которых задачи поддерживаются многократно используемыми рабочими потоками, например при использовании ExecutorService для ожидания результата и при использовании CompletableFuture.join() заблокировать, пока не станет доступен результат.В этом случае объединение больше относится к задаче, выполняемой параллельно, чем к фактическому базовому рабочему потоку, который впоследствии может быть повторно использован для других задач.

Само имя происходит из модели fork-join для распараллеливания задач и сбора их результатов.

0 голосов
/ 02 января 2019

Слово "соединение" происходит от модели Fork-Join , где "вилка" означает разделение потока на несколько потоков для параллельной обработки, а "соединение" означает ожидание параллельных потоков длязавершите свою часть, прежде чем продолжить в одной теме.

...