竞争条件相当棘手,因为我必须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