采取线程转储的Java应用程序后,多个线程是出现在以下状态:线程处于RUNNABLE状态,但堆栈跟踪显示正在处理?
Thread [email protected]
java.lang.Thread.State: RUNNABLE
at xmlpdf.text.Word.allocateArrays(Word.java:205)
at xmlpdf.text.Word.calculateWidth(Word.java:237)
at xmlpdf.text.TextFormatter.format(TextFormatter.java:167)
at xmlpdf.text.TextFormatter.formatToWidthImpl(TextFormatter.java:116)
at xmlpdf.text.TextBlock.formatToWidthImpl(TextBlock.java:71)
at xmlpdf.tables.TextCell.formatToWidthImpl(TextCell.java:45)
at xmlpdf.tables.Cell.formatToWidth(Cell.java:349)
at xmlpdf.tables.Row.assignCellWidths(Row.java:97)
at xmlpdf.tables.Table.layout(Table.java:354)
at xmlpdf.tables.Table.formatRowsToWidth(Table.java:329)
at xmlpdf.tables.Table.formatToWidthImpl(Table.java:373)
at xmlpdf.Block.formatToWidth(Block.java:57)
at xmlpdf.renderer.Page.formatWidthAndHeight(Page.java:200)
at xmlpdf.renderer.Page.addBlockWhichIsNotFooterWholePagesOnly(Page.java:1026)
.....
反复线程转储(由线程名称标识)中完全相同的状态显示这些相同的主题。通过JMX检查还显示这些线程正在运行4个小时。
问:
线程如何能够在可运行状态,但堆栈跟踪它表明它是做什么(在这种情况下,一些在xmlpdf类)?
我认为RUNNABLE总是意味着,线程可用于处理任何新的任务。
'RUNNABLE'指线程正在执行,它位于[javadoc](http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.State.html)中。 – 2013-03-05 14:20:56
我希望一个线程执行被称为RUNNING而不是..RUNNABLE似乎暗示 - 它可以运行,如果需要的话。 – Jasper 2013-03-07 07:12:24