我决定为下个学期建立一个应用程序框架,以节省制作项目的时间,并进一步了解Java,我只需要创建一个新的Application(),向其发送一个窗口和其他要求,然后调用application .start
应用程序扩展了Thread,run()打开了一个jframe,这是一个自制的控制台,允许我与代码进行交互,然后进入while循环,在其中我将像视频游戏一样为时钟插入代码。
当我在控制台中键入/ exit时,它将调用Application中的Terminate()函数,该函数的确向控制台发送了关闭消息,并且确实将运行的布尔值更改为false,完成了循环,处理了窗口,然后关闭了线程并因此关闭程序。
由于某种原因,我的学徒的知识水平不知道,该循环似乎一直在运行。
通过调用我在控制台中发出的命令以发送回Boolean运行值,我确定控制台命令出口确实有效,并将Boolean值更改为false,但是循环继续进行。我尝试将Minecraft循环插入其中,但它也没有停止,即使1毫秒使线程进入睡眠状态也能正常工作,并且程序按预期关闭。
//where the application is started from
public static void main( String[] args ) {
Application app = new Application("Test");
app.start();
}
//Application Class
public class Application extends Thread {
static boolean running;
@Override
public void run() {
if ( true ) {
console.open();
}
while ( running ) {
}
if ( window != null ) {
window.dispose();
}
Console.dispose();
}
public static void terminate() {
Console.input( "Closing ..." );
running = false;
}
}
答案 0 :(得分:0)
使用易失性变量
//Application Class
public class Application extends Thread {
private volatile boolean run_T = true;
static boolean running;
@Override
public void run() {
if ( run_T ) {
console.open();
}
while ( run_T ) {
}
if ( window != null ) {
run_T=true;
window.dispose();
}
Console.dispose();
}
public static void terminate() {
Console.input( "Closing ..." );
running = false;
}
}