如何在java中终止正在运行的循环?
方案A:如何在java中终止正在运行的循环?,java,exit,terminate,Java,Exit,Terminate,方案A: public void startThreadPool2(boolean flag) { while(flag) { Runnable run = new Runnable() { @Override public void run() { System.out.println("running"); } }; serv
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在不同的程序中使用不同的类加载器。将标志存储在脚本中,并为其提供一个setter!
在程序c(不管是什么)中,您需要引用在程序b中创建的感伤分析实例。通过从程序c调用设置程序false来停止程序a中的循环,
标志
通过值传递,因此循环将永远运行或根本不运行。另外,while(flag){if(flag==false)break;..}
是多余的。不清楚在程序C中指的是什么循环。在程序B调用的a中停止while循环。我不知道如何准确地解释这些。也许我们可以说停止程序B或停止程序A中的while循环。标志并不重要。你可以认为它是while(true)。这个循环是否与程序C的main
方法在同一个线程中执行?它似乎不起作用。我可以通过使用Singleton找到相同的实例。在程序B中,它使用while(true)调用startThreadPool2()。如果我在C中设置标志,这意味着使用while(false)调用startThreadPool2(),则不会发生任何事情。我们可以找到相同的实例,但找不到方法。