По идее метода join(), если я правильно его понимаю, он должен передавать управление программой тому потоку,. Это не совсем корректно, ...
Метод wait() отдает (освобождает) монитор объекта, так что другие потоки теперь могут его (монитор) захватить, то есть войти в блок synchronized для этого объекта. Затем метод wait() переходит в состояние ожидания, до тех пор пока другой поток не вызывет метод notify() или notifyAll() для этого же объекта.
public static void main(String[] args) { Printer printer1 = new Printer("Коля"); Thread thread1 = new Thread(printer1); thread1.start(); thread1.join(); }
Join — Это метод синхронизации, который блокирует вызывающий поток (то есть поток, который вызывает метод) до тех пор, пока не Join завершится поток, метод ...
Кроме того он может остановить поток загружающий файл, если была нажата ... Подобно методу Thread.sleep() метод join может ждать в течение ...
В русской терминологии за термином Thread укрепился перевод "Поток". ... isAlive() - определить, выполняется ли поток; join() - ожидать завершение потока ...
Но ведь еще покупатель тоже есть, он тоже со своим циклом и т.д. На деле же, у продюсера и у консумера при запуске "new Thread(producer).start ...
Вам все еще нужны мьютексы и условия. ... Что делает std :: thread.join ()? ... Он позволяет main() в этом примере дождаться завершения всех потоков до ...
Что такое ThreadPoolExecutor и зачем он нужен? ... Вызвать у созданного объекта Thread метод start() (после этого запустится метод run() у ...
Но разные потоки на самом деле не работают одновременно: это просто кажется ... В нашем примере мы говорим Thread, чтобы он запустил функцию ...
for(i = 0; i < threads.length; i++) threads[i].join(); ... выполняющим запуск, так что пока он не изменяет список во время итерации по нему, все в порядке.