Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > не работает join


Автор: redwhite90 13.1.2013, 02:40
Я наверное не понимаю как join должен работать:
например в каком то потоке(скажем main thread) вот такой код написан:
Код

t1.start();
t1.join();
System.out.println("это должно вывестись после завершения потока t1");

то вывод сообщения должен произойти всяко после завершения потока t1. но у меня это правило не соблюдается. В чем я не прав?

Автор: Pawl 13.1.2013, 19:41
Цитата(redwhite90 @  13.1.2013,  02:40 Найти цитируемый пост)
В чем я не прав?

Вы, безусловно, правы. join() действительно не дает работать потоку main до окончания выполнения потока t1. Смотрите логику Вашего кода в целом. Вот простейший пример работы join():
Код

public class TestJoin {
    public static void main(String[] args) throws Exception{
        Thread t1 = new Thread() {
         public void run() {
             for (int i = 0; i < 10; i++) {
                 System.out.println(i);
             }
         }
        };
        t1.start();
        t1.join();
        System.out.println("это должно вывестись после завершения потока t1");
    }
}

уберите t1.join(), и сообщение будет выводиться где попало, иначе - только после отработки цикла в run.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)