2011-03-19 53 views
0

我有一個以上的處理器(線程)執行以上,有的線程依賴於另一個的結果..所以我想打線以定義的順序如何允許兩個線程以android中的預定義順序執行?

+1

如果你需要連續執行處理,爲什麼你需要多個線程?你不能直接控制線程執行的順序,所以第二個線程將不得不處於阻塞狀態以等待第一個觸發的事件。這是可行的,還是第二個線程在做其他事情,在這種情況下,你最終會投票... – forsvarir 2011-03-19 10:08:53

回答

2

您可以從第一個線程,第二線程中執行。

final Thread th2 = new Thread(new Runnable(){ 
    public void run(){ 
     doSomething2; 
    } 
} 
Thread th1 = new Thread(new Runnable(){ 
    public void run(){ 
     doSomething; 
     th2.start(); 
    } 
}); 
th1.start(); 
th2.join(); 

但你極有可能不需要第二個線程都:

Thread th1 = new Thread(new Runnable(){ 
    public void run(){ 
     doSomething; 
     doSomething2; 
    } 
}); 
th1.start(); 
th1.join(); 
0

如果你在一個線程等待另一個線程來完成,有幾個選項。

一種是使用的CountDownLatch,

某處普通股閂 CountdownLatch閂=新CountdownLatch(1);

線程1,

doSomething(); 
countdownLatch.countdown(); 

線程2,

countdownLatch.await(); 
doSomethingElse(); 

倒計時閂鎖只能雖然使用一次。

java.util.concurrent有一堆其他類可以解決您的問題。 LinkedBlockingQueue,CyclicBarrier,Exchanger可能會有用。不知道更多細節,很難多說。

並且當評論和其他答案指出,如果可以的話,完全避免多個線程。