2014-10-29 109 views
-3

我有三個線程命名爲線程1,線程2和線程3。java線程如何排序線程的執行順序

如何排序線程執行?

像線程3跟隨線程2和線程2跟隨線程1? 其實請參考我的解決方案,在我的情況下,線程1加入主程序並同時執行(線程1) 最後創建線程2等等。 我在問這是一個正確的方法嗎?

+1

如果您想要一個接一個地等待線程的完整執行,請使用'join()'。 – TheLostMind 2014-10-29 06:25:19

+0

請參考我的解決方案,我使用連接只用於線程t1(與主)休息它是簡單的順序流。 – 2014-10-29 06:31:02

回答

0

你應該看看Thread.join()

join方法允許一個線程等待的 另一完成。如果t是線程當前正在執行的線程對象,則

t.join();

導致當前線程暫停執行,直到t的線程 終止。加入過載允許程序員指定一個等待時間段 。但是,與睡眠一樣,加入時間依賴於操作系統 ,所以您不應該假設加入將按您指定的長度準確等待 。

+0

PLZ指我的解決方案 – 2014-10-29 06:32:01

0

封裝測序;

類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?