【发布时间】:2012-05-01 14:38:41
【问题描述】:
假设我有 A 类和 B 类。A 类只有一个 main 方法,代码如下:
public class A{
public static void main(String[] args){
String xput = "";
ExecutorService pool = Executors.newFixedThreadPool(4);
for(int i = 1; i < number; i++){
pool.submit(new B(list.get(i-1)));
xput = B.returnValue;
System.out.println(xput);//testing purposes
}
}
}
B 类扩展了 Thread,如下所示:
public class B extends Thread{
static String returnValue = "";
public B(String x){
super(x);
}
public void run(){
double x = 20;
returnValue += "Grand total: " +
NumberFormat.getCurrencyInstance().format(x) + "\n";
}
}
然而,System.out.println(xput) 除了空行之外不打印任何内容。有谁知道为什么?我的类的代码显然比这多得多,但由于我没有得到任何输出,所以我从一个小案例开始。
【问题讨论】:
-
您的 main 方法没有实例化任何
B,我们不知道list是什么。 -
您需要阅读大量有关多线程、并发和 Java 内存模型的内容。这些都是复杂而微妙的话题,我不认为只是将代码示例放在 SO 上并让人们告诉你该做什么从长远来看会有很大帮助。你真的有很多东西要学。 Goetz 所著的“Java 并发实践”是一本极好的书。
标签: java multithreading static