java - Java多线程事件处理
问题描述
所以我正在做一个项目,我有一个 opengl 图形线程,我想做的一件事是在源文件更改时自动重新加载着色器。我知道我可以使用 Java Watch API 很容易地轮询文件修改。我在想最好在单独的线程上运行“观察者”,以防止图形渲染变慢/卡顿。也就是说,观察者需要能够在文件更改时告诉图形线程,以便我可以重新加载该着色器源代码。问题在于,如果我使用接口并且只是将图形线程订阅给观察者,则观察者在其自己的线程而不是图形线程下执行接口实现。
所以我的问题是有一种方法可以像在图形线程上一样执行处理程序,或者即使是这种情况的正确方法。
PS我想最终以作业队列的方式将我的所有资产加载移动到单独的工作线程,如果可能的话,这个问题的解决方案也适用于这些其他类型的任务?
(此外,如果这种类型的代码有一个我很想知道的特定名称,那么我搜索的任何内容都没有让我到任何地方)
编辑:我唯一的选择是在gl线程中存储一个“在着色器源更改时”队列,然后让观察者将一个项目附加到该队列并让gl线程中的某些东西消耗它吗?或者是否有一种更通用的、更少样板的方式来做上图描述的事情?
解决方案
推荐阅读
- python - 将元组列表转换为python中的列表列表
- validation - Angular 6 - 删除 ngClass
- azure - Azure 数据工厂 (ADFv2) - 如何在 USQL 作业中处理来自不同文件夹的多个输入文件
- javascript - 在 JavaScript 中将对象附加到另一个对象时避免元数据
- python - conda install -c conda-forge opencv 后 Spyder 无法启动
- azure - Azure AD B2C 出现错误“Safari 无法打开页面,因为地址无效”
- css - 使用 CSS 在悬停时为圆形边框线设置动画
- javascript - 基于 propvalues 的 Ramda 格式对象数组
- python - 伟大的期望期望列只包含整数,当只有一个是坏的时,所有行都失败
- python - Python - 如何调用正确的函数