Итак, я работаю над проектом, в котором у меня есть графический поток opengl, и одна из вещей, которые я хочу сделать, - это автоматически перезагружать шейдеры при изменении исходного файла. Я знаю, что могу использовать API Java Watch, чтобы достаточно легко опросить изменения файлов. Я подумал, что было бы лучше запустить «Watcher» в отдельном потоке, чтобы предотвратить замедление / заминку графического рендеринга. При этом наблюдатель должен иметь возможность сообщать графическому потоку, когда файл был изменен, чтобы я мог перезагрузить исходный код этого шейдера. Проблема заключается в том, что если я использую интерфейс и просто подписываю графический поток на наблюдателя, наблюдатель выполняет реализацию интерфейса под своим собственным потоком, а не с графическим потоком.
Так что мои вопросы, есть ли способ выполнить обработчик, как если бы он был в графическом потоке, или это даже правильный подход для такой ситуации.
P.S. Я хотел бы в конечном итоге переместить всю загрузку моего ресурса в отдельные рабочие потоки в виде очереди заданий, если возможно, решение этой проблемы также будет работать для этих других типов задач?
(Также, если у этого типа кода есть определенное имя, которое я хотел бы знать, ничто из того, что я искал, никуда меня не привело)
Редактировать: Является ли моя единственная возможность сохранить очередь «изменен источник шейдера» в потоке gl, а затем сделать так, чтобы наблюдатель добавил элемент в эту очередь, и что-то в потоке gl потребило его? Или есть более общий, менее шаблонный способ сделать что-то, как описано на рисунке выше?