我有三個線程命名爲線程1,線程2和線程3。java線程如何排序線程的執行順序
如何排序線程執行?
像線程3跟隨線程2和線程2跟隨線程1? 其實請參考我的解決方案,在我的情況下,線程1加入主程序並同時執行(線程1) 最後創建線程2等等。 我在問這是一個正確的方法嗎?
我有三個線程命名爲線程1,線程2和線程3。java線程如何排序線程的執行順序
如何排序線程執行?
像線程3跟隨線程2和線程2跟隨線程1? 其實請參考我的解決方案,在我的情況下,線程1加入主程序並同時執行(線程1) 最後創建線程2等等。 我在問這是一個正確的方法嗎?
你應該看看Thread.join()
join方法允許一個線程等待的 另一完成。如果t是線程當前正在執行的線程對象,則
t.join();
導致當前線程暫停執行,直到t的線程 終止。加入過載允許程序員指定一個等待時間段 。但是,與睡眠一樣,加入時間依賴於操作系統 ,所以您不應該假設加入將按您指定的長度準確等待 。
PLZ指我的解決方案 – 2014-10-29 06:32:01
封裝測序;
類T1實現Runnable {
@Override
public void run() {
System.out.println("thread executing is : "
+ Thread.currentThread().getName());
T2 tr2 = new T2();
Thread t2 = new Thread(tr2, "t2");
t2.start();
}
}
類T2實現Runnable {
@Override
public void run() {
System.out.println("thread executing is : "
+ Thread.currentThread().getName());
T3 tr3 = new T3();
Thread t3 = new Thread(tr3, "t3");
t3.start();
}
}
類T3實現Runnable {
@Override
public void run() {
System.out.println("thread executing is : "
+ Thread.currentThread().getName());
}
}
公共類序列{ 公共靜態無效的主要(字串[] args)拋出InterruptedException的{
T1 tr1 = new T1();
Thread t1 = new Thread(tr1, "t1");
t1.start();
t1.join();
Thread.sleep(4000);
System.out.println("main finishing..");
}
}
//這是如何我做這件事。有沒有更好的方法來做到這一點?像t3 join t2 join t1?
如果您想要一個接一個地等待線程的完整執行,請使用'join()'。 – TheLostMind 2014-10-29 06:25:19
請參考我的解決方案,我使用連接只用於線程t1(與主)休息它是簡單的順序流。 – 2014-10-29 06:31:02