[英]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.