競爭條件相當棘手,因爲我必須learn。Java線程化:將值傳入線程(可能是競態條件)
public class MyThread extends Thread {
private volatile boolean active;
private volatile Job job;
public MyThread() {
active = true;
job = null;
}
public void run() {
while (isActive()) {
if(job != null) {
doIt();
}
}
}
public void finish() {
this.active = false;
}
public boolean isActive() {
return active;
}
private void doIt() {
int c = job.a + job.b;
job.result(c);
job = null;
}
public call processJob(Job j) {
this.job = j;
}
}
這正常工作,如果我使用的線程低量,但是當大量人同時運行運行到的問題。通過問題我的意思是job.result(c);
不被稱爲一些線程,雖然他們都沒有被停止。
我假設發生這種情況是因爲如果通過processJob(j)
從不同的進程調用,我無法正確添加作業。 問題:我應該怎麼做纔對?
您如何計劃設置(或修改)工作並激活? – 2010-11-11 23:57:19
而問題是? – 2010-11-12 00:04:28