簡體   English   中英

Android中的循環線程啟動

[英]Cyclic Thread start in Android

我有一個調用線程的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僅在前一個Thread停止后才啟動,是否可以使用以下技巧?

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

並在getUpdate方法的末尾添加以下代碼行(在run方法之外):

return 1;

使用上面的代碼,每個線程只有在previus停止后才能啟動嗎? 還是我錯了?

但是,如果我希望每個線程僅在前一個線程停止后才啟動,我可以使用>以下技巧嗎?

這意味着您必須嚴格按順序執行,因此整個代碼可以在同一線程上。 如果沒有並行性,那么啟動多個線程有什么意義?

您可以使用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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM