У меня проблемы с пониманием значения объединения в следующем случае:
Thread t1=new MyThread(1);
Thread t2=new MyThread(2);
t1.start();
t2.start();
t1.join();
t2.join();
вопрос такой:
как я понимаю start вызывает метод run потока.
таким образом, основной поток сначала проходит через запуски и, таким образом, все потоки инициализируются
тогда основной поток переходит к t1.join, а это означает, что основной поток будет ждать до t1, чтобы завершить свою работу, и только затем продолжает t2.join ().
Что я не понимаю, так это то, что t1, t2 уже запущены, поэтому они находятся внутри метода run.
и, таким образом, результат должен быть неожиданным. я прав?
так почему это получается по порядку:
У меня есть следующий метод запуска:
void run(){
for(int i=0; i<4; i++){
System.out.println(j);
}
}
когда j - идентификатор в конструкторе MyThread;
вывод:
2
2
2
2
1
1
1
1
или
1
1
1
1
2
2
2
2