Оба метода wait () и join () при вызове потоком 1 в потоке 2 заставляют поток-1 ждать потока-2 либо на некоторое время, либо до тех пор, пока thread-2 завершается.
Если мы используем перегруженные версии этих методов, то есть ожидание (долгий тайм-аут) и соединение (длинный миллисекунд), то
В случае ожидания (долгий тайм-аут) поток-1 станет запускаемым посредством уведомления (или notifyall) или даже тайм-аут (в зависимости от того, что наступит раньше).
В случае соединения (длинные миллисекунды) поток-2 станет работоспособным либо после завершения потока-2, либо после истечения тайм-аута (в зависимости от того, что наступит раньше).
Так в чем же тогда разница между этими двумя реализациями?
Вот некоторые, о которых я подумал: -