1

Java アプリケーションのスレッド ダンプを取得すると、いくつかのスレッド スナップショットが次のように表示されます。

Thread t@384
   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)
    .....

いくつかの同じスレッド ( Thread Nameで識別される) がまったく同じ状態にあります。

参考までに、JMX を介して調べると、これらのスレッドが 4 時間実行されていることもわかります。

質問:

RUNNABLEスレッドが特定の状態にありながら、そのスレッドがStack Trace何かを実行していることを示すにはどうすればよいでしょうか?

タスクを処理するのではなく、新しいタスクを処理するためにRUNNABLEスレッドが利用可能であることを常に意味すると思いました。

4

1 に答える 1

7

Thread.State.RUNNABLE API:実行可能な状態のスレッドが Java 仮想マシンで実行されていますが、プロセッサなどのオペレーティング システムからの他のリソースを待機している可能性があります。

于 2013-03-05T14:20:40.250 に答える