InterruptedException, вызывающий перезапуск приложения после запуска виртуальных потоков в течение нескольких дней.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 InterruptedException, вызывающий перезапуск приложения после запуска виртуальных потоков в течение нескольких дней.

Сообщение Anonymous »

Я столкнулся с проблемой в своем приложении, использующем zulu-openjdk:21. Чтобы управлять потоками более эффективно, я инкапсулировал метод ожидания завершения нескольких потоков:

Код: Выделить всё

public static void joinThreads(Thread... threadList) {
try {
for (Thread thread : threadList) {
if (thread == null) {
continue;
}
thread.join();
}
} catch (InterruptedException e) {
log.error("Virtual thread task exception", e);
throw new BizException(CodeEnum.INTERNAL_BUSINESS_FAIL, "Virtual thread task was interrupted");
}
}
Проблема возникает после того, как приложение проработает примерно пять дней, что приводит к следующему исключению и приводит к сбою и автоматическому перезапуску приложения:

Код: Выделить всё

ERROR com.xmonecode.tccompass.common.utils.VirtualThreadUtil - Virtual thread task exception java.lang.InterruptedException: null
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1100)
at java.base/java.util.concurrent.CountDownLatch.await(CountDownLatch.java:230)
at java.base/java.lang.VirtualThread.joinNanos(VirtualThread.java:824)
at java.base/java.lang.Thread.join(Thread.java:2061)
at java.base/java.lang.Thread.join(Thread.java:2154)
at com.xmonecode.tccompass.common.utils.VirtualThreadUtil.joinThreads(VirtualThreadUtil.java:40)
at com.xmonecode.tccompass.common.utils.VirtualThreadUtil.joinStartVirtualThread(VirtualThreadUtil.java:70)
at com.xmonecode.tccompass.interceptor.RebateInterceptor.preHandle(RebateInterceptor.java:45)
at org.springframework.web.servlet.HandlerExecutionChain.applyPreHandle(HandlerExecutionChain.java:146)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1084)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
Я обнаружил, что виртуальный поток прерывается во время ожидания. Однако я не уверен, почему эти потоки прерываются.
Дополнительная информация:

Код: Выделить всё

JDK Version: zulu-openjdk:21
Framework: Spring Boot
Exception Location: Occurs during CountDownLatch.await() and VirtualThread.joinNanos() calls
Environment: Running in a containerized setup, with automatic restart on crash
После перезапуска приложение какое-то время может нормально работать.
Кто-нибудь сталкивался с подобной проблемой или может ли кто-нибудь дать рекомендации по решению этой проблемы?
p>
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/785 ... -threads-f
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»