Java Panic Button,用于停止Java程序中间过程

时间:2010-10-15 08:34:56

标签: java multithreading

some Function()
{  
    for(xxxxxx){
         //a infinite loop or just a long code loading an running stuff from a list
    }
}

ActionListener Panic(yyyyyyyy)
{
     Stops the infinite loop by list.clear() or insert some thing into the list and break the loop
}

我正试图制作一个恐慌按钮来停止我的代码,问题是当Java正在运行时,所有actionListener都排队等待并在我的big for循环结束之后触发。这可能是一个愚蠢的问题,但我似乎无法搞清楚。我能想到的唯一解决方案就是将这个问题变成一个线程(有点难以确定它是否可行)或者给出一个弹出消息,询问用户是否想要继续每个周期(太多提示)。只想拥有一个红色按钮,可以打破循环并破坏程序,就像linux中的Ctrl Z和eclipse中的红色停止按钮或停止文件传输的取消按钮一样。

感谢您寻找= D. 很多和很多的感谢

哦顺便说一下,如果解决方案是Thread,请把它放在我上面的例子中。我几乎不知道怎么写线程=(

2 个答案:

答案 0 :(得分:2)

如果要停止无限(或非常长)的循环,循环必须定期确保它是否未被中断。

public class AlmostInfinite extends Thread {
    public void run() {
        while (!Thread.interrupted()) {
            /* Do some work, not too long */
        }
        cleanUp();
    }

    private cleanUp() {
        /* close network connections, files and other resources */
    }
}

ActionListener panic(AlmostInfinite t)
{
    t.interrupt();
}

答案 1 :(得分:0)

最终的Java恐慌按钮实现包括对System.exit()的调用。

这将结束 JVM进程,这意味着你需要更加确定你想要以这种方式退出,因为什么都不会被清除,任何未完成的工作将会留下未完成(考虑数据库连接,事务,内存缓存等)