【发布时间】:2014-02-28 06:00:39
【问题描述】:
我正在使用 Swing 处理 Java。我正在开发一个绘图应用程序。只要布尔变量设置为true,它就有一个不断运行的不断更新循环。循环位于线程内。
它工作正常,但现在我希望循环仅在特定时间运行(仅在按下鼠标时),否则不运行。 (因此不会白白浪费内存)。
要停止循环,我可以简单地将变量设置为false,这样while 循环就会退出。但我的问题是,停止循环后如何重新启动循环?将该变量设置回true 不会重新启动循环,因为程序已经在该循环之外(我正确吗?)。如果是这样,有什么好的方法可以做到这一点?
我的循环:
public void run(){
int TICKS_PER_SECOND = 50;
int SKIP_TICKS = 1000 / TICKS_PER_SECOND;
int MAX_FRAMESKIP = 10;
long next_game_tick = System.currentTimeMillis();
int loops;
boolean app_is_running = true;
while( app_is_running ) {
loops = 0;
while( System.currentTimeMillis() > next_game_tick && loops < MAX_FRAMESKIP) {
update();
catch (AWTException e) { e.printStackTrace(); }
next_game_tick += SKIP_TICKS;
loops++;
}
repaint();
}
}
【问题讨论】:
-
@NickWiggill 没问题,更新了问题。我正在使用 Java 和 Swing。
-
哈哈没问题,刚看到你的回复我就把评论删了。
标签: java multithreading swing