【发布时间】:2017-06-25 22:07:46
【问题描述】:
在 Java 中,如何将事件从子线程传递到主线程,不会在循环中冻结主线程?
在线我只能找到涉及主线程陷入无限while循环检查shared thread-safe event FIFO queue(孩子放置事件的位置)中的事件的解决方案。
然后睡x 秒并重新开始。
我需要激活主线程并做其他事情,例如能够处理来自 gui 的事件。当子线程中发生某些事情时,主线程必须调用.eventHappened()。
【问题讨论】:
-
你需要的是一个listener线程,当有事情要做时,它将事件数据传递给主OBJECT。此事件数据将在侦听器线程中处理。否则,您需要主线程进行检查。你用了多少个用户名?
-
请详细说明您的线程模型。原始线程?执行者? AWT?摇摆? SWT?
-
主线程是我创建所有 gui (Swing) 的地方。另一个是原始工作线程,下载并解析它。有效,感谢您的回答,但是在侦听器线程上,我遇到了同样的问题,如何将处理后的事件交给主线程?
-
为了以后的使用和个人理解,我想知道,但在这种特定情况下,我需要主线程上的事件,以便我可以更新 Swing gui 相应地。我在几篇文章中读到,如果您将摇摆组件传递给多个线程和/或尝试从单独的线程更新它们,则会发生不好的事情。
-
然后有一个 gui 发布工作的队列和一个发布工作结果的第二个队列。要在 UI 中显示结果,您需要另一个线程和一些 ui 的异步调用
标签: java multithreading events