熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

線程堆:給你的線程命名,察看你的系統

2022-06-13   來源: Java高級技術 

  集成開發環境(IDE)能給圖形界面應用程序提供一個很好的調試工具但是它卻不能調試一個多線程的Java服務器程序
  
  
  
  幸運的是有幾種工具例如logging應用程序接口(API)或者Java Debugger可以用來調試Java服務器程序開發者還能使用一個系統的線程堆在任何時候觀察系統的狀態
  
  
  
  運行服務器然後按[ctrl] [/]會運行一個系統線程堆這樣將輸出當前運行的所有線程例如
  
  
  
  ^\Full thread dump:
  
  
  
  Thread prio= tid=xfe nid=xb waiting on monitor [xbfffef]
  
  
  
  Thread prio= tid=xafde nid=xa runnable [xfxfb]
  
  at PlainSocketImplsocketAccept(Native Method)
  
  at PlainSocketImplaccept(PlainSocketImpljava:)
  
  at ServerSocketimplAccept(ServerSocketjava:)
  
  at ServerSocketaccept(ServerSocketjava:)
  
  at coPortListenerrun(PortListenerjava:)
  
  at javalangThreadrun(Threadjava:)
  
  
  
  Signal Dispatcher daemon prio= tid=xaf nid=xaf waiting on monitor []
  
  
  
  Finalizer daemon prio= tid=xac nid=xd waiting on monitor [xaxab]
  
  at javalangObjectwait(Native Method)
  
  at javalangrefReferenceQueueremove(ReferenceQueuejava:)
  
  at javalangrefReferenceQueueremove(ReferenceQueuejava:)
  
  at javalangrefFinalizer$FinalizerThreadrun(Finalizerjava:)
  
  
  
  Reference Handler daemon prio= tid=xab nid=xcca waiting on monitor [xxb]
  
  at javalangObjectwait(Native Method)
  
  at javalangObjectwait(Objectjava:)
  
  at javalangrefReference$ReferenceHandlerrun(Referencejava:)
  
  
  
  VM Thread prio= tid=xade nid=xca runnable
  
  
  
  VM Periodic Task Thread prio= tid=xab nid=x waiting on monitor
  
  
  
  後面的四個線程是標准線程而其他的則跟運行的服務器程序有關這兩個線程被命名為Thread和Thread如果用Thread th = new Thread(runnableServer)代替Thread th = new Thread(runnable)去創建進程你就可以命名自己要創建的線程
  
  
  
  另外如果你調用javalangThread的setName(String)方法你也能命名你的線程並且可以很容易從線程堆的輸出中發現原來的Thread是服務器程序
  
  
  
  Server prio= tid=xafde nid=xa runnable [xfxfb]
  
  
  
  而原來的Thread線程現在變成了Thread
  
  
  
  通過命名線程和取得線程堆開發者就能看到Java虛擬機(JVM)的內部狀態如果想得到更多信息的話你就得去研究Java Debugger了

From:http://tw.wingwit.com/Article/program/Java/gj/201311/27606.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.