fix ThreadUtils.await() blocking on exception

This commit is contained in:
woodser 2024-01-20 06:41:24 -05:00
parent 847e9e8701
commit 11c8b05f45

View file

@ -48,14 +48,25 @@ public class ThreadUtils {
} }
} }
/**
* Awaits execution of the given command, but does not throw its exception.
*
* @param command the command to execute
* @param threadId the thread id
*/
public static void await(Runnable command, String threadId) { public static void await(Runnable command, String threadId) {
if (isCurrentThread(Thread.currentThread(), threadId)) { if (isCurrentThread(Thread.currentThread(), threadId)) {
command.run(); command.run();
} else { } else {
CountDownLatch latch = new CountDownLatch(1); CountDownLatch latch = new CountDownLatch(1);
execute(() -> { execute(() -> {
command.run(); try {
latch.countDown(); command.run();
} catch (Exception e) {
throw e;
} finally {
latch.countDown();
}
}, threadId); }, threadId);
try { try {
latch.await(); latch.await();