Написал Java-процесс в Spring-Boot, процесс использует пул fork-join.
Иногда процесс запускается нормально и успешно завершается, иногда он зависает на неопределенный срок, запускается с использованием очень высокой скорости процессора, но по-прежнему не выполняется прогресс.
Дамп потока показывает состояние работоспособности только для 3 типов работы, которые какследующим образом:
1. java.lang.Thread.State: RUNNABLE
at java.util.WeakHashMap.put(WeakHashMap.java:453)
at java.util.Collections$SetFromMap.add(Collections.java:5461)
at org.apache.cxf.jaxrs.client.spec.ClientImpl$WebTargetImpl.initTargetClientIfNeeded(ClientImpl.java:358)
at org.apache.cxf.jaxrs.client.spec.ClientImpl$WebTargetImpl.request(ClientImpl.java:260)
at org.apache.cxf.jaxrs.client.spec.ClientImpl$WebTargetImpl.request(ClientImpl.java:366)
2. "C2 CompilerThread2" #30 daemon prio=9 os_prio=0 tid=0x00007ff9b0979000 nid=0x250be waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
3."GC task thread#12 (ParallelGC)" os_prio=0 tid=0x00007ff9b0034800 nid=0x24f94 runnable
Далее, пытаясь отладить проблему, у меня есть несколько входных данных:
Я использую org.apache.cxf.jaxrs.client, когда анализ найден, метод initTargetClientIfNeeded для ClientImplиспользуя 2 свойства thread.safe.client и thread.safe.client.state.cleanup.period.Нужно ли мне определять эти 2 свойства, чтобы сделать его потокобезопасным?