當前位置:首頁 » 編程語言 » java查看線程

java查看線程

發布時間: 2022-12-16 04:10:07

java 線程總數如何查看

調用java.lang.Thread中的靜態方法:

getAllStackTraces() 返回所有活動線程的堆棧跟蹤的一個映射。

Ⅱ 查看Java哪個線程佔用CPU資源

以下方法在LINUX下執行通過:
1.先定位佔用cpu高的進程
top
2.使用以下命令
ps p 14766 -L -o pcpu,pid,tid,time,tname,stat,psr | sort -n -k1 -r
其中14766是剛才1中cpu佔用率高的進程pid
3.2.4 32525 32537 01:58:41 ? Sl 6
0.8 32525 1771 00:43:12 ? Sl 0
0.8 32525 1769 00:39:46 ? Sl 0
0.7 32525 12324 00:33:36 ? Sl 0
0.5 32525 1772 00:27:50 ? Sl 0
0.5 32525 1768 00:25:45 ? Sl 0
0.4 32525 30760 00:19:13 ? Sl 0
0.4 32525 1773 00:22:36 ? Sl 0
0.4 32525 1770 00:20:25 ? Sl 0
0.3 32525 32385 00:00:10 ? Sl 0
0.1 32525 31668 00:00:03 ? Sl 0
0.1 32525 31667 00:00:03 ? Sl 0
0.1 32525 1790 00:07:10 ? Sl 1
其中第3個結果就是此進程中有問題的線程nid
4.通過jstack命令mp出堆棧
"AppController_ThreadPool_L2_Pool Thread" daemon prio=10 tid=0x0000000051c2b000 nid=0x7bb3 in Object.wait() [0x000000005e3c5000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.company.threadpool.ThreadPoolImpl$PoolThread.run(ThreadPoolImpl.java:142)
- locked <0x00002aaca30341a8> (a org.company.threadpool.ThreadPoolImpl$PoolThread)
其中的nid就是線程的編碼,只不過是經過了16進制的轉換。
即十進制的31776對應的十六進制)0x7bb3,定位到線程後一切好辦。

Ⅲ java 多線程怎麼查看當前線程id

publicclass線程id
{
publicstaticvoidmain(String[]args)
{
System.out.println(" ==========多線程怎麼查看當前線程id========== ");
init();
}//初始化!
privatestaticvoidinit()
{
for(inti=0;i<2;i++)
{
newThread(newTestRunnable()).start();
}
}
}


{
//簡單測試直接用了靜態,偷懶了!
privatestaticinti=10;
publicvoidrun()
{
show();
}
synchronizedvoidshow()
{
while(i>=1)
System.out.println("當前執行的線程Id是:"+Thread.currentThread().getName()+"---->"+i--+" ");
}
}

Ⅳ java 如何獲得線程池中正在執行的線程數

java中線程池的監控可以檢測到正在執行的線程數。
通過線程池提供的參數進行監控。線程池裡有一些屬性在監控線程池的時候可以使用
taskCount:線程池需要執行的任務數量。
completedTaskCount:線程池在運行過程中已完成的任務數量。小於或等於taskCount。
largestPoolSize:線程池曾經創建過的最大線程數量。通過這個數據可以知道線程池是否滿過。如等於線程池的最大大小,則表示線程池曾經滿了。
getPoolSize:線程池的線程數量。如果線程池不銷毀的話,池裡的線程不會自動銷毀,所以這個大小隻增不+ getActiveCount:獲取活動的線程數。
通過擴展線程池進行監控。通過繼承線程池並重寫線程池的beforeExecute,afterExecute和terminated方法,我們可以在任務執行前,執行後和線程池關閉前干一些事情。如監控任務的平均執行時間,最大執行時間和最小執行時間等。這幾個方法在線程池裡是空方法。如:
protected void beforeExecute(Thread t, Runnable r) { }

Ⅳ 如何查看一個java進程有多少個線程在工作

理論上來說,如果你全用threadgroup來跑線程的話,有個叫enumerate的方法可以得到【該threadgroup下】所有active的(也就是你說的在工作的)線程以及子線程,但程序裡面不一定是把線程放threadgroup裡面的,有可能有人自己new一個出來run或者別的,所以不能完全依靠這個辦法。我目前想到的辦法,貌似得弄個全局的counter,開個守護線程,讓這個線程去數監控所有線程的狀態,依照線程是否Active去加減這個counter。
還有個懶點的,你看windows的taskmanager(假設你在win平台上的話),裡面有一個column叫做thread
count的,我沒試過到底准不準,不過這個最省事了,右鍵點出來一看就知道了。

Ⅵ 如何查看java線程佔用的內存

首先加入一個靜態方法:
public static long getMemory() {
return Runtime.getRuntime().freeMemory();
}
這個是查看運行時空閑內存的語句。
線程啟動前
long point1 = getMemory();
線程調用
long point2 = getMemory();

兩數之差 就是佔用內存

Ⅶ 如何在c盤中查看java線程數

Windows
通過任務管理器查看進程信息
在進程頁簽中查看Java進程,我是idea啟動,因此可以在idea下查看相關進程


此外可以在詳細信息頁簽下Ctrl+f搜索java


通過控制台查看進程信息
進入CMD,鍵入tasklist,可以查看所有的進程信息,包括進程ID、內存使用情況


查看Java相關的進程,可以添加過濾條件 tasklist | findstr "java" ,需要注意windows中字元串需要使用雙引號,要不就不加也是可以的


如果是在IDEA中啟動程序,可以借用idea的Terminal終端執行命令


taskkill 殺死進程
殺死進程使用taskkill /pid 指定進程id,如果無法殺死,可以嘗試強制殺死taskkill /pid 進程id -t -f


可以看到idea控制台中進程已結束


通過tasklist | findstr 進程id 已經無法查詢到該進程,說明進程終止成功

熱點內容
密碼的前三個字是什麼 發布:2025-01-24 06:36:48 瀏覽:584
伺服器e3與e5有什麼區別 發布:2025-01-24 06:19:35 瀏覽:122
linuxdb2建資料庫 發布:2025-01-24 06:19:09 瀏覽:665
武漢長江存儲公司有多少人 發布:2025-01-24 06:09:03 瀏覽:413
ftp伺服器輸入密碼 發布:2025-01-24 05:27:41 瀏覽:210
電信帳號怎麼改密碼 發布:2025-01-24 05:11:22 瀏覽:847
筆記本x17配置怎麼選 發布:2025-01-24 05:05:53 瀏覽:8
python如何封裝 發布:2025-01-24 05:05:46 瀏覽:844
csgo怎麼連接伺服器 發布:2025-01-24 05:05:45 瀏覽:323
408哪個配置合適 發布:2025-01-24 05:01:54 瀏覽:883