Java 线程——Swing 事件调度线程中的永久循环

发布于 2024-10-07 01:34:14 字数 357 浏览 7 评论 0原文

我有一个 SwingWorker 及其实现:

public Void doInBackground() throws InterruptedException
{
     while (true)
     {
            while(_update)
            {

            }
     }
}

如果 _update 设置为 false,让 EDT 永久循环是否安全?或者我应该让它每秒睡觉?

-- 编辑

看起来我没有使用 SwingWorker,因为它应该被使用。谢谢大家。我将坚持根据需要创建 SwingWorkers。

I have a SwingWorker with the implementation:

public Void doInBackground() throws InterruptedException
{
     while (true)
     {
            while(_update)
            {

            }
     }
}

If _update is set to false, is it safe to let the EDT perpetually go on a loop? Or should I let it sleep every second?

-- EDIT

It looks like I'm not using SwingWorker as it's supposed to be used. Thanks all. I'll stick to creating SwingWorkers as I need them.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抚笙 2024-10-14 01:34:14

让事件分派线程循环运行是不安全的。

需要事件分派线程来提供用户与应用程序的交互。如果您希望某个事件每隔几秒发生一次,则应在每次完成时将其或其另一个副本放回到事件队列中。

It is not safe to let the Event Dispatch Thread go in a loop.

The event dispatch thread is needed to provide user interaction with the application. If you want an event to go off every few seconds, you should put it, or another copy of it, back on the event queue each time it has completed.

指尖微凉心微凉 2024-10-14 01:34:14

为什么不启动另一个线程并让它根据需要运行/睡眠,并让它使用 SwingUtilities.InvokeLater 或其他任何必要的东西来执行 UI 工作?

如果没有任何其他上下文,看起来您可能会滥用 SwingWorker?

Why wouldn't you just start another thread and let it run/sleep as needed, and have it use SwingUtilities.InvokeLater or whatever to do UI work as necessary?

Without any other context it looks like you might be misusing SwingWorker?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文