【发布时间】:2014-12-03 06:15:58
【问题描述】:
程序 A:
public void startThreadPool2(boolean flag) {
while(flag) {
Runnable run = new Runnable() {
@Override
public void run() {
System.out.println("running");
}
};
service.execute(run);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
程序 B:
public static void main(String[] args) {
SentimentAnalyse sentimentAnalyse = SentimentAnalyse.getInstance();
sentimentAnalyse.startThreadPool2(true);
}
程序 C:
public static void main(String[] args) {
//how to stop the while loop
}
while 循环一直在运行,我不知道如何在另一个程序中停止它。
//更新 你的方法可能都行得通,我发现我的单例不起作用,因为 eclipse 在不同的程序中使用了不同的类加载器。
【问题讨论】:
-
flag是按值传递的,因此循环将永远运行或根本不运行。另外,while (flag) { if (flag == false) break; ... }是多余的。 -
不清楚你在程序 C 中指的是什么循环。
-
在程序B调用的A中停止while循环。我不知道如何准确解释这些。也许我们可以说停止程序 B 或停止程序 A 中的 while 循环。
-
标志无关紧要。你可以认为是while(true)。
-
这个循环是否与程序C的
main方法在同一个线程中执行?