【发布时间】:2011-04-06 12:27:21
【问题描述】:
我有以下可运行的类。
public class OnesRun implements Runnable {
public int ones = 0;
private int passendNumber;
public OnesRun(int passendNumber) {
this.passendNumber = passendNumber;
}
public void run() {
if (passendNumber == 1)
ones++;
}
}
如果遇到此类的每个实例,都应增加ones 的值。
执行完所有线程后,我想从类外读取ones 的值。
- 如何增加
ones线程安全? - 如何访问
ones来自这个班级之外? 通过静态变量?或者我可以把它放到应用程序中吗 上下文?
编辑:
我希望下面的伪代码能让我的意图更清楚。
OnesRun.ones = getCurrentValueOnes();
while ( (number = readNumbersFromFile) != null) {
threadPool.execute(new OnesRun(number));
}
print("Overall values of ones " + OnesRun.ones);
【问题讨论】:
-
请注意,伪代码很可能会执行您想要的操作,因为打印的值将介于 0 和实际数量之间。原因是您无法确定在访问计数之前执行了所有
OnesRun实例。 -
没错。我必须等到所有线程都执行完毕。
标签: java multithreading thread-safety runnable