0
我正在嘗試使用任意數量的工作線程來處理arraylist。我想跟蹤每個工作線程處理了多少項目,並在特定數目後終止它們。會在工作線程類中聲明一個變量counter並檢查該計數器是否有效?線程中的訪問變量
.
.
Thread t = new Thread();
t.start
while(true){
if(t.counter >= 5){
return;
}
}
.
.
class Thread{
int counter = 0;
public void run {
while(true){
do something....
counter++;
}
}
}
Busy-waiting('while(true){...}')是一個非常糟糕的主意,因爲這將佔用100%或儘可能多的一個CPU,從而降低了工作線程的可用性。 – 2015-04-02 03:26:09
你還需要使'counter'變量'volatile'如下:'volatile int counter = 0;'。否則,不能保證你的主線程會在變量counter中看到變化。 – 2015-04-02 03:26:58
感謝反饋傢伙,我決定改變我的實現,以傳遞工作線程應該在工作線程的構造函數中作爲參數迭代的迭代值,以便不再需要檢查。 – bakalolo 2015-04-02 04:43:53