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

命名你的線程和查看系統

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

  雖然集成開發環境(IDE)可以為圖形化應用程序提供很好的調試設置但是它不允許你調試多線程的Java服務器程序
  
  
  
  幸運的是有幾個工具可以做到例如日志應用程序接口(API)和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就是服務器程序
  
  Serverprio= tid=xafde nid=xa runnable [xfxfb]
  先前的Thread線程現在被命名為Thread
  
  通過命名線程並獲得線程轉儲開發人員可以窺竊Java虛擬機(JVM)的狀態想要更進一步開發人員必須探究Java調試器
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27413.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.