Речь идет о приложении, которое должно обрабатывать (VAD, Loudness, Clipping) много звуковых файлов (например, 100 КБ). В настоящее время я создаю столько рабочих потоков (вызываемых элементов), сколько могу поместить в память, а затем запускаю все с помощью threadPool.invokeAll (), записываю результаты в файловую систему, выгружаю обработанные файлы и продолжаю на шаге 1. В связи с Дело в том, что это приложение с графическим интерфейсом, я не хочу, чтобы пользователь чувствовал, что приложение «не отвечает» при обработке всех звуковых файлов. (что он делает в это время, потому что invokeAll блокируется). Я не уверен, что это «хороший» способ исправить это. Для пользователя не должно быть возможности делать другие вещи во время обработки, но я хотел бы показать индикатор выполнения, такой как «10 из 100000 звуковых файлов готовы». Так как мне туда добраться? Нужно ли мне создавать «поток наблюдателя», чтобы каждый работник удерживал на нем обратный вызов? Я довольно новичок в многопоточности и не понимаю, каков такой механизм.
Если вам нужно знать: я использую SWT / JFace.