gpt4 book ai didi

java - 程序运行速度很慢,忽略Thread.sleep

转载 作者:行者123 更新时间:2023-12-01 09:54:36 24 4
gpt4 key购买 nike

我编写了一个复杂的 java 程序,它有一个 GUI。

在 GUI 中,我有三个按钮:“播放”、“播放全部”和“重置”,以及一些表格。

当我单击“播放”时,程序会执行其逻辑,然后将输出打印到我提到的表中。正如预期的那样,这工作正常。经过一定量的“播放”操作后,我们将所有数据打印到表中,这样我们就完成了并且不能再单击它。此时,我禁用了播放按钮。

当我单击“全部播放”时,我希望它就像单击“播放”一样,直到不再可能为止。所以我写了这段代码:

public synchronized void actionPerformed(ActionEvent event) 
{
if(event.getSource() == playAllButton)
{
while(playButton.isEnabled())
{
playButton.doClick();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if(event.getSource() == playButton)
{
Command command = listOfCommands.get(commandNumber++);
if(command.getCommandType() == "PF")
{
PFLabel.setText("PF Count:" + (++PFCount));
}
if(command.getCommandType() == "PR")
{
PRLabel.setText("PR Count:" + (++PRCount));
}
if(command.getCommandType() == "GP")
{
if(checkIfPF())
{
addPageToRam(((GPCommand)command).getPage());
}
else
{
if(checkIfPR(((GPCommand)command).getPage().getPageId()))
{
replacePage(((GPCommand)command).getPage(),getWithWhoToReplace(((GPCommand)command).getPage().getPageId()));
}
}
}
}
if(commandNumber == listOfCommands.size()) // we are done!
{
playButton.setEnabled(false);
}
}

正如我提到的,当我单击播放按钮时,它会立即按预期打印结果。但是当我单击全部播放时,它会运行很长时间而不显示任何输出,然后最后仅打印最终结果。这不是我想要的。我想要的是它打印当前结果,稍等一下,以便我可以查看它,然后打印下一个结果。

即使我删除 Thread.sleep,它也非常慢(并且仍然只打印最后的结果)。

有什么办法可以让它运行得更快吗?更重要的是 - 在再次单击按钮之前如何让它等待?我想在再次点击之前先查看当前结果一段时间。

最佳答案

在评论部分,我发现可以通过使用 SwingWorkers 并将长时间执行的代码移至异步任务来解决该问题。 Coobird先生发了一个方法,怎么做here .

关于java - 程序运行速度很慢,忽略Thread.sleep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37344520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com