Android中的循环线程启动

时间:2012-09-05 09:41:17

标签: java android multithreading

我有一个调用线程的for cylce:

if(toModify[j]==1)
{
    getUpdate(methods_list[j],username, password);
}

getUpdate是一种包含以下内容的方法:

new Thread(new Runnable() {
  public void run() {
      // *** some operations***
  }
}).start();

通过循环,我可以同时运行每个Thread 但是,如果我希望每个Thread仅在前一个停止之后启动,我可以使用以下技巧吗?

if(toModify[j]==1)
{
  int returnValue =  getUpdate(methods_list[j],username, password);
}

并在getUpdate方法的末尾添加此代码行(在run方法之外):

return 1;

使用上面的代码,每个线程只有在previus停止时才能启动?或者我错了?

2 个答案:

答案 0 :(得分:2)

  

但如果我希望每个Thread只在前一个停止后启动,我可以使用>以下技巧?

这意味着您有严格的顺序执行,因此整个代码可以在同一个线程上。如果没有并行性,启动多个线程的重点是什么?

答案 1 :(得分:1)

您可以使用RetrantLock

private final ReentrantLock lock = new ReentrantLock();

if(toModify[j]==1)        
  {   
      lock.lock();  // block until condition holds
 try {
   getUpdate(methods_list[j],username, password);         
 } finally {
   lock.unlock()
 }

} 

此外,您还需要在从getUpdate()方法启动的线程上调用join()。

Thread thread = new Thread(new Runnable() { 
        public void run() { 
        // *** some operations*** 
        } 
        }); 
    thread.start();
    thread.join();