java - 如何在 Java 中跨线程传递事件?

标签 java multithreading events

在 Java 中,如何将事件从子线程传递到主线程,不卡住循环中的主线程

在网上,我只能找到涉及主线程卡在无限 while 循环中检查共享线程安全事件 FIFO 队列(子级放置事件的位置)中的事件的解决方案。 然后 hibernate x 秒并重新开始。

我需要主线程处于 Activity 状态并执行其他操作,例如能够处理来自 gui 的事件。当子线程中发生某些事情时,主线程必须调用 .eventHappened()

最佳答案

为了避免卡住 UI,这应该可以解决问题:

1) 传入工作并发队列,其中工作线程或工作线程池正在检查其运行方法。

2) 完成的工作并发队列,其中监听器线程(与 UI 线程不同)在循环中进行检查。监听器线程使用异步设施/方法调用 UI 更新以避免 UI 异常。

因此,UI 线程向传入工作队列提供事件或数据。工作线程拾取它,执行工作并将结果发布到工作完成队列。

监听器线程检查已完成工作队列中的新项目,并将结果异步发布到 UI。

关于java - 如何在 Java 中跨线程传递事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44751052/

相关文章:

java - 无状态 AjaxFallbackButton?

java - 在 Java 中拆分字符串以提供所需的输出

javascript - 在别人的 Javascript 之后使用 jQuery

ios - 如何检测在 Cordova 中按下的主页按钮?

java - 如何使用 Java 在 Selenium RC 中使用 xpath

java - 是否有更好的 AtomicInteger 竞争条件比较功能?

multithreading - 在线程之间发送 Nalgebra VectorN

multithreading - x86 中非读和非写指令重新排序有关系吗?

multithreading - 它有 crystal-lang 队列吗?

mysql - 更好的数据库模式