2011-03-19 51 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可能会有用。不知道更多细节,很难多说。

并且当评论和其他答案指出,如果可以的话,完全避免多个线程。