diff --git a/lib/src/main/java/org/asamk/signal/manager/internal/MultiAccountManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/internal/MultiAccountManagerImpl.java index 478e761b..de1c6a15 100644 --- a/lib/src/main/java/org/asamk/signal/manager/internal/MultiAccountManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/internal/MultiAccountManagerImpl.java @@ -123,10 +123,20 @@ public class MultiAccountManagerImpl implements MultiAccountManager { @Override public void close() { + final List closeThreads; synchronized (managers) { - for (var m : new ArrayList<>(managers)) { - m.close(); + closeThreads = new ArrayList<>(managers).stream() + .map(m -> Thread.ofPlatform().name("manager-close-" + m.getSelfNumber()).start(m::close)) + .toList(); + } + + for (final var t : closeThreads) { + try { + t.join(); + } catch (InterruptedException ignored) { } + } + synchronized (managers) { managers.clear(); } }