"[STANDBY] ExecuteThread: '31' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007ff1d802d000 nid=0xf38e in Object.wait() [0x00007ff154bca000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:503)
at weblogic.work.ExecuteThread.waitForRequest(ExecuteThread.java:248)
- locked <0x000000073eeb0338> (a weblogic.work.ExecuteThread)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:281)
socketReader线程提高了weblogic处理客户端请求的速度和能力,12c默认会启动4个,进程是0,1,2,3。
"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007ff1dc0b3800 nid=0x34c8 runnable [0x00007ff1fdf6b000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <0x000000070000ddf0> (a sun.nio.ch.Util$2)
- locked <0x000000070000de08> (a java.util.Collections$UnmodifiableSet)
- locked <0x000000070000d778> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
at weblogic.socket.NIOSocketMuxer.selectFrom(NIOSocketMuxer.java:550)
at weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:479)
at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119)
RUNNABLE表示线程正在运行,java.net.SocketInputStream.socketRead0(Native Method)以下是表示线程调用的堆栈
"Connect thread 10.150.22.37 session" daemon prio=10 tid=0x00007ff1a424e000 nid=0xf377 runnable [0x00007feec79f7000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at com.jcraft.jsch.IO.getByte(IO.java:82)
at com.jcraft.jsch.Session.read(Session.java:918)
at com.jcraft.jsch.Session.run(Session.java:1388)
at java.lang.Thread.run(Thread.java:745)
下面两个线程,一个锁住了0x0000000734f85ab0,一个在等待,通常要关心这一类。
"[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007ff1d8014000 nid=0x34fa in Object.wait() [0x00007ff16fffc000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x0000000735a1b840> (a com.sun.star.lib.uno.environments.remote.JobQueue)
at com.sun.star.lib.uno.environments.remote.JobQueue.removeJob(JobQueue.java:221)
- locked <0x0000000735a1b840> (a com.sun.star.lib.uno.environments.remote.JobQueue)
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:331)
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:304)
at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:91)
at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:639)
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:151)
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:133)
at com.sun.proxy.$Proxy268.loadComponentFromURL(Unknown Source)
at gg.eic.core.fileconvertor.AbstractConversionTask.loadDocument(AbstractConversionTask.java:125)
at gg.eic.core.fileconvertor.AbstractConversionTask.execute(AbstractConversionTask.java:86)
at gg.eic.core.fileconvertor.ExternalOpenOfficeManager.execute(ExternalOpenOfficeManager.java:60)
- locked <0x0000000734f85ab0> (a gg.eic.core.fileconvertor.connection.OpenOfficeConnection)
at gg.eic.core.fileconvertor.OpenOfficeDocumentConverter.convert(OpenOfficeDocumentConverter.java:125)
at gg.eic.core.fileconvertor.OpenOfficeDocumentConverter.convert(OpenOfficeDocumentConverter.java:107)
at gg.eic.core.fileconvertor.FileConvertor.convertFile(FileConvertor.java:362)
at gg.eic.core.excelexport.parser.ExcelCreator.convertExcelVersion(ExcelCreator.java:552)
at gg.eic.core.excelexport.parser.ExcelCreator.createExcel(ExcelCreator.java:297)
at gg.eic.core.excelexport.processor.impl.ExcelExportBigDataProcessor.createExcel(ExcelExportBigDataProcessor.java:44)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3388)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3354)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2238)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2154)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2132)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:312)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:264)
"[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007ff1d800b800 nid=0x34f6 waiting for monitor entry [0x00007ff1fc4e6000]
java.lang.Thread.State: BLOCKED (on object monitor)
at gg.eic.core.fileconvertor.ExternalOpenOfficeManager.execute(ExternalOpenOfficeManager.java:57)
- waiting to lock <0x0000000734f85ab0> (a gg.eic.core.fileconvertor.connection.OpenOfficeConnection)
at gg.eic.core.fileconvertor.OpenOfficeDocumentConverter.convert(OpenOfficeDocumentConverter.java:125)
at gg.eic.core.fileconvertor.OpenOfficeDocumentConverter.convert(OpenOfficeDocumentConverter.java:107)
at gg.eic.core.fileconvertor.FileConvertor.convertFile(FileConvertor.java:362)
at gg.eic.core.excelexport.parser.ExcelCreator.convertExcelVersion(ExcelCreator.java:552)
at gg.eic.core.excelexport.parser.ExcelCreator.createExcel(ExcelCreator.java:297)
at gg.eic.core.excelexport.processor.impl.ExcelExportBigDataProcessor.createExcel(ExcelExportBigDataProcessor.java:44)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:312)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:264)
waiting on condition,这种等待通常是线程主动等待或正在进行IO操作,而并非等待其他线程释放资源,这里在代码里调用了sleep方法。还有wait(),join()方法也可以导致这种状态。
"[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007ff1d8009800 nid=0x34f5 waiting on condition [0x00007ff1fc5e7000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at gg.eic.view.excelimport.servlet.ExcelImportServlet.doImport(ExcelImportServlet.java:297)
at gg.eic.view.excelimport.servlet.ExcelImportServlet.doPost(ExcelImportServlet.java:168)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)