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,请把它放在我上面的例子中。我几乎不知道怎么写线程=(
答案 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进程,这意味着你需要更加确定你想要以这种方式退出,因为什么都不会被清除,任何未完成的工作将会留下未完成(考虑数据库连接,事务,内存缓存等)