gpt4 book ai didi

java - 全速线程上的 SwingUtilities.invokeLater

转载 作者:行者123 更新时间:2023-12-02 09:19:24 25 4
gpt4 key购买 nike

我有一个线程使用 SwingUtilities.invokeLater 在我的 JFrame 上显示更新。线程的速度是可调的,当它设置为全速(更新之间没有 sleep )时,我的程序会严重减慢。我想问题是我的线程生成了太多 JFrame 线程无法使用的 SwingUtilities.invokeLater 事件。那么我可以在我的线程上做些什么来删除以前添加但未消耗的事件吗?或者我应该使用其他一些方法来更新 JFrame 而不使用 SwingUtilities.invokeLater?

提前致谢。

最佳答案

这可能是 SwingWorker 的完美工作。您可以发布增量更新,SwingWorker 将批量更新它们以解决性能问题:

Because the process method is invoked asynchronously on the Event Dispatch Thread multiple invocations to the publish method might occur before the process method is executed. For performance purposes all these invocations are coalesced into one invocation with concatenated arguments.

您想要在 EDT 上运行的代码,可以通过实现 process() 添加。更新列表在参数中传递给您。

关于java - 全速线程上的 SwingUtilities.invokeLater,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114097/

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