在 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/