如何在java中终止正在运行的循环?

如何在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

方案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在不同的程序中使用不同的类加载器。

将标志存储在脚本中,并为其提供一个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(),则不会发生任何事情。我们可以找到相同的实例,但找不到方法。