diff --git a/src/main/java/org/jabref/gui/util/DefaultFileUpdateMonitor.java b/src/main/java/org/jabref/gui/util/DefaultFileUpdateMonitor.java index 9d53439b90e..f6797a9ed97 100644 --- a/src/main/java/org/jabref/gui/util/DefaultFileUpdateMonitor.java +++ b/src/main/java/org/jabref/gui/util/DefaultFileUpdateMonitor.java @@ -12,6 +12,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; +import javafx.application.Platform; + import org.jabref.logic.JabRefException; import org.jabref.logic.WatchServiceUnavailableException; import org.jabref.model.util.FileUpdateListener; @@ -19,6 +21,7 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; +import com.google.common.collect.Multimaps; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,7 +35,7 @@ public class DefaultFileUpdateMonitor implements Runnable, FileUpdateMonitor { private static final Logger LOGGER = LoggerFactory.getLogger(DefaultFileUpdateMonitor.class); - private final Multimap listeners = ArrayListMultimap.create(20, 4); + private final Multimap listeners = Multimaps.synchronizedListMultimap(ArrayListMultimap.create(20, 4)); private volatile WatchService watcher; private final AtomicBoolean notShutdown = new AtomicBoolean(true); private final AtomicReference> filesystemMonitorFailure = new AtomicReference<>(Optional.empty()); @@ -82,7 +85,7 @@ public boolean isActive() { } private void notifyAboutChange(Path path) { - listeners.get(path).forEach(FileUpdateListener::fileUpdated); + Platform.runLater(() -> listeners.get(path).forEach(FileUpdateListener::fileUpdated)); } @Override