没有循环执行任务的其他方法?

时间:2015-03-06 16:21:35

标签: java

我是java的新手,我正在创建一个无限运行的程序。目前,我设置程序的方式是调用某个方法执行任务然后在同一个类中调用另一个方法,此方法将执行任务然后调用初始方法。这个过程会无限期地重复,直到我停止编译。

我的问题是当我尝试创建一个GUI以使我的程序更加用户友好时,一旦我按下初始启动按钮,这个无限循环将不允许我执行任何其他操作 - 包括停止程序。

还有另一种方法可以做到这一点吗?

如果这种方法非常草率,我很抱歉,我从视频中学习java并查看其他程序并且还没有完全理解它。

3 个答案:

答案 0 :(得分:3)

您需要在新线程中运行您的任务,并将您的GUI内容放在另一个线程中。

实际上,如果你继续解决这个问题,你最终会发明event driven programming。很多基于GUI的软件,比如Android,都使用这种模式。

答案 1 :(得分:1)

有几种解决方案。首先想到的是,您可以将任何方法需要在其自己的线程中永久运行,并让不同的线程监听用户输入。这可能会导致线程彼此交互的困难,但它允许您这样做。

或者,添加一个检查用户输入的方法,并在程序的无限循环内处理它。类似下面的内容

while(true){
    //do stuff

    checkForUserInput();

    //do other stuff
}

答案 2 :(得分:1)

要解决此问题,您需要在另一个线程中运行UI。 许多程序都基于无限循环(例如,等待新用户连接的服务器)并且您的问题不存在。

管理分配给无限循环的CPU时间(或核心)以及分配用于处理UI交互的CPU时间是操作系统的工作,而不是你的:这就是你的UI应该运行的原因一个与实际代码不同的线程。

根据您使用的GUI库(Swing,...),可能有不同的方法来实现它,并且在Stack Overflow上可以很好地解决实现它的方法