我真的不喜歡在旅途中發佈多個問題,抱歉,如果這是煩人的。同步是如何工作的?
我終於設法解決了我的問題。除了我不確定它是可靠的還是明智的。
public void run() {
// TODO Auto-generated method stub
float time = 0.01f;
try {
while(time < timer)
{
time+=0.1f;
Thread.sleep(100);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
synchronized (ProgressBar.class) {
int val =++ProgressBar.threadCount;
if(val == 10)
{
System.out.println("All threads are finished!") ;
}
}
}
}
我已經測試了5分鐘,現在看來工作。 但有人可以解釋發生了什麼?當線程啓動時,它確保同步塊未被使用,否則等待它完成。 那它是一些排隊系統嗎? 再次感謝。 編輯:
以前的鏈接 How does AtomicInteger work?
Thread.join freezes progressbar
怎麼了downvotes?這不是一個有效的問題嗎? –
我還沒有投票,但我有我的問題與這個問題。你提到一個早期的問題,但不要鏈接到它(你期望我去搜索它嗎?)。你沒有解釋代碼應該做什麼。您的代碼示例不會顯示您的線程是如何創建的,也不會顯示您的案例中的ProgressBar。 – ibid
閱讀 - http://download.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html – adatapost