首页 > 解决方案 > Java多线程事件处理

问题描述

所以我正在做一个项目,我有一个 opengl 图形线程,我想做的一件事是在源文件更改时自动重新加载着色器。我知道我可以使用 Java Watch API 很容易地轮询文件修改。我在想最好在单独的线程上运行“观察者”,以防止图形渲染变慢/卡顿。也就是说,观察者需要能够在文件更改时告诉图形线程,以便我可以重新加载该着色器源代码。问题在于,如果我使用接口并且只是将图形线程订阅给观察者,则观察者在其自己的线程而不是图形线程下执行接口实现。

所以我的问题是有一种方法可以像在图形线程上一样执行处理程序,或者即使是这种情况的正确方法。

在此处输入图像描述

PS我想最终以作业队列的方式将我的所有资产加载移动到单独的工作线程,如果可能的话,这个问题的解决方案也适用于这些其他类型的任务?

(此外,如果这种类型的代码有一个我很想知道的特定名称,那么我搜索的任何内容都没有让我到任何地方)

编辑:我唯一的选择是在gl线程中存储一个“在着色器源更改时”队列,然后让观察者将一个项目附加到该队列并让gl线程中的某些东西消耗它吗?或者是否有一种更通用的、更少样板的方式来做上图描述的事情?

标签: javamultithreadingeventsevent-handling

解决方案


推荐阅读