java让程序延迟执行_Java运行时延迟执行程序

我有一个JButton,它有一个重写的actionPerformed(event)函数,如下所示:public void actionPerformed(ActionEvent event) {

try {

System.out.println("enters here");

Process p = Runtime.getRuntime().exec("python tetris.py");

} catch (Exception ex) {

System.err.println("error");

}

}

这段代码的问题在于,Python子进程在Java程序执行时开始,因此子进程的控制台(本应显示为全屏)被缩小到更小的大小。所以我决定在执行后续进程之前终止Java程序:

^{pr2}$

这带来了一个更新的问题——尽管随后的进程显示为全屏显示,因为Java程序在之前终止俄罗斯方块.py完全执行时,两个进程之间存在延迟,导致桌面内容在之前闪烁一秒钟俄罗斯方块.py开始奔跑。此时,我使用了waitFor():public void actionPerformed(ActionEvent event) {

try {

System.out.println("enters here");

Process p = Runtime.getRuntime().exec("python tetris.py");

p.waitFor();

System.exit(0);

} catch (Exception ex) {

System.err.println("error");

}

}

事实证明,waitFor()等待子进程终止,这与第一个场景中的问题相同,即子进程控制台的大小缩小。在

我的目标是:或者找到子进程在全屏模式下执行的方法(它自己执行)。

如果子进程正确执行,父进程(Java程序)可以终止,但是我需要消除两个进程之间的延迟。

我更喜欢终止Java程序,因为当我用JPanel从它的子进程切换回它自己的进程时,所有jbutton的位置都会混乱,因此无论如何都需要新的执行。如有任何意见,我们将不胜感激。在

更新:

劳恩的建议并不完全有效,因为ProcessBuilder似乎只要点击JButton就生效了,但我从中得到了一个想法。我没有检查子进程的状态,而是让Java进程休眠一段时间(实验值介于Python程序在较小窗口中执行和Java程序过早终止以产生长时间延迟之间)。在public void actionPerformed(ActionEvent event) {

try {

ProcessBuilder pb = new ProcessBuilder("python", "tetris.py");

Process p = pb.start();

Thread.sleep(300); // less than 315 ~ 320 transition

System.exit(0);

} catch (Exception ex) {

System.err.println("error");

}

}

然而,无论我使用了什么价值观,我都不能完美地实现转换,桌面内容会短暂地闪烁,但延迟比以前缩短了。为了进一步抵消这一点,我考虑将桌面设置为黑色,使其看起来没有显示任何内容,但这显然不是一种闲置的方法-它取决于处理器的性能,因此具有较差的可移植性,更不用说这并不能真正解决问题。如有进一步的建议,我们将不胜感激。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值