From 52d818be4579abe15dfdc84a3d0fe936f4e9df33 Mon Sep 17 00:00:00 2001 From: AsamK Date: Thu, 18 Sep 2025 21:44:58 +0200 Subject: [PATCH] Close all managers in parallel in multi account mode --- .../manager/internal/MultiAccountManagerImpl.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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(); } }