diff --git a/src/main/java/org/jitsi/jigasi/transcription/TranslationManager.java b/src/main/java/org/jitsi/jigasi/transcription/TranslationManager.java index 31ad6597..8fa555ff 100644 --- a/src/main/java/org/jitsi/jigasi/transcription/TranslationManager.java +++ b/src/main/java/org/jitsi/jigasi/transcription/TranslationManager.java @@ -17,7 +17,10 @@ */ package org.jitsi.jigasi.transcription; +import org.jitsi.jigasi.util.Util; + import java.util.*; +import java.util.concurrent.*; /** * This class manages the translations to be done by the transcriber. @@ -45,6 +48,11 @@ public class TranslationManager */ private final TranslationService translationService; + /** + * The thread pool to serve all connect, disconnect ore reconnect operations. + */ + private static final ExecutorService threadPool = Util.createNewThreadPool("jigasi-translation"); + /** * Initializes the translationManager with a TranslationService * and adds the default target language to the list. @@ -171,20 +179,21 @@ private List getTranslations( @Override public void notify(TranscriptionResult result) { - if (!result.isInterim()) + threadPool.submit(() -> { - List translations - = getTranslations(result); - Iterable translationResultListeners; - - synchronized (listeners) + if (!result.isInterim()) { - translationResultListeners = new ArrayList<>(listeners); - } + List translations = getTranslations(result); + Iterable translationResultListeners; - translationResultListeners.forEach( - listener -> translations.forEach(listener::notify)); - } + synchronized (listeners) + { + translationResultListeners = new ArrayList<>(listeners); + } + + translationResultListeners.forEach(listener -> translations.forEach(listener::notify)); + } + }); } @Override