Java多线程事件处理

时间:2018-05-01 09:42:18

标签: java multithreading events event-handling

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

所以我的问题是有一种方法可以执行处理程序,就好像它在图形线程上一样,或者对于像这样的情况来说甚至是正确的方法。

enter image description here

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

(如果这种类型的代码有一个我想知道的特定名称,我搜索的任何东西都不会让我到处都是)

编辑:我唯一的选择是在gl线程中存储“on shader source changed”队列然后让观察者将一个项目附加到该队列并且gl线程中的某些东西会消耗它吗?或者,如上图所示,是否有一种更通用的更少的样板做法?

0 个答案:

没有答案