为什么“-等待锁定(java.io.PrintStream)”线程被阻塞?

时间:2019-11-29 06:13:44

标签: web-applications java-8 thread-dump filehandler wildfly-12

我们正在使用JDK 8在wildFly 12服务器中运行Web应用程序。无论何时通过wildFly文件处理程序下载任何文件,我们都面临着java.exe CPU的高利用率。在线程转储中,有很多java.io.PrintStream类被阻塞。堆栈跟踪如下:

Thread Dump:

"pool-13-thread-21" #343 prio=5 os_prio=0 tid=0x00000000200e8000 nid=0x115c waiting for monitor entry [0x00000000424ee000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at java.io.PrintStream.println(PrintStream.java:805)
    - waiting to lock <0x00000006e1236a50> (a java.io.PrintStream)
    at org.jboss.stdio.StdioContext$DelegatingPrintStream.println(StdioContext.java:474)
    at com.rabbit.Consumer$1.handleDelivery(Consumer.java:89)
    at com.rabbitmq.client.impl.ConsumerDispatcher$5.run(ConsumerDispatcher.java:149)
    at com.rabbitmq.client.impl.ConsumerWorkService$WorkPoolRunnable.run(ConsumerWorkService.java:100)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)


"Thread-161" #261 prio=5 os_prio=0 tid=0x000000002d954800 nid=0x11e4 waiting for monitor entry [0x0000000038eff000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at org.jboss.logmanager.handlers.WriterHandler.doPublish(WriterHandler.java:56)
    - waiting to lock <0x00000006e121a4b0> (a java.lang.Object)
    at org.jboss.logmanager.ExtHandler.publish(ExtHandler.java:77)
    at org.jboss.logmanager.LoggerNode.publish(LoggerNode.java:314)
    at org.jboss.logmanager.LoggerNode.publish(LoggerNode.java:322)
    at org.jboss.logmanager.LoggerNode.publish(LoggerNode.java:322)
    at org.jboss.logmanager.LoggerNode.publish(LoggerNode.java:322)
    at org.jboss.logmanager.Logger.logRaw(Logger.java:850)
    at org.jboss.logmanager.Logger.logp(Logger.java:657)
    at org.apache.commons.logging.impl.Jdk14Logger.log(Jdk14Logger.java:87)
    at org.apache.commons.logging.impl.Jdk14Logger.info(Jdk14Logger.java:176)
    at com.processengine.jobprocessor.PingUpdateThread.run(PingUpdateThread.java:84)

Standalone.xml handler code:

            <server name="default-server">
                <http-listener name="default" socket-binding="http" redirect-socket="https" max-post-size="2147483648" max-parameters="10000" enable-http2="true"/>                
                <host name="default-host" alias="localhost">
                     <location name="/Management" handler="Mgmt"/>
                    <http-invoker security-realm="ApplicationRealm"/>
                </host>
            </server>

            <handlers>
                <file name="Mgmt" path="..\..\Management\ExternalWar\Management.war"/>
            </handlers>

我想知道为什么 PrintStream 类被阻止,为什么下载过程会增加CPU利用率。

预先感谢

0 个答案:

没有答案
相关问题