以jar运行的Java进程开始使用高CPU,没有明显进度

时间:2018-10-05 13:44:39

标签: java spring-boot stream garbage-collection cxf

已经在spring-boot中编写了一个Java进程,该进程使用fork-join池。

进程有时运行良好并且成功完成,有时会无限期挂起,而使用很高的CPU仍然无法完成任务。

线程转储仅显示以下三种类型的工作的可运行状态:

 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,当分析发现ClientImpl的initTargetClientIfNeeded方法正在使用2个属性thread.safe.client和thread.safe.client.state.cleanup.period。我是否需要定义这两个属性以使其线程安全?

0 个答案:

没有答案