Программа создает поток t0, который порождает поток t1, а затем создаются потоки t2 и t3. После выполнения потока t3
приложение никогда не возвращается к другим потокам, порожденным ранее (t0, t1, t2) и они остаются застрявшими.Java thread join 3
Зачем нужны нитки t0
, t1
и t2
?
public class Cult extends Thread
{
private String[] names = {"t1", "t2", "t3"};
static int count = 0;
public void run()
{
for(int i = 0; i < 100; i++)
{
if(i == 5 && count < 3)
{
Thread t = new Cult(names[count++]);
t.start();
try{
Thread.currentThread().join();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
System.out.print(Thread.currentThread().getName() + " ");
}
}
public static void main(String[] a`)
{
new Cult("t0").start();
}
}
Вы, вероятно, хотите 't.join()' 'не Thread.currentThread() присоединиться();' – Gray
@Gray:. То есть именно то, что я ищу. t.join() выполняется правильно с окончанием t3 и t0 заканчивается последним. Но что происходит, когда мы используем Thread.currentThread.join()? Почему t0, t1, t2 приостановлены посередине? –