本文目錄一覽:
- 1、Java如何獲取正在運行的線程的Id
- 2、用c語言 java 來獲取當前(進程)線程狀態
- 3、java 根據線程名字查詢一個線程,能實現嗎?
- 4、java獲得當前線程有兩種方法,第一種是Thread.currentThread();誰知道另外一種?
Java如何獲取正在運行的線程的Id
使用:Thread.currentThread().getName() 就可以了
比如會輸出:pool-1-thread-7
用c語言 java 來獲取當前(進程)線程狀態
通過調用Thread.getState()方法獲取當前線程的狀態。以下是我的代碼,可以直接編譯運行。
public class Test {
public static void main(String[] args) {
new NewThread().start(); //啟動線程
}
}
class NewThread extends Thread{
public NewThread() {
super(“NewThread”); //定義當前線程的名稱為NewThread
}
@Override
public void run() {
System.out.println(“當前線程:”+currentThread().getName()+”運行狀態為:”+getState()); //打印線程的運行狀態
}
}
java 根據線程名字查詢一個線程,能實現嗎?
根據線程名稱找到線程,在java中是可以實現的,實現步驟是:
1、首先獲取Java VM中當前運行的所有線程
以下代碼是用數組返回Java VM中當前運行的所有線程
public static Thread[] findAllThreads()
{
ThreadGroup group = Thread.currentThread().getThreadGroup();
ThreadGroup topGroup = group;
/* 遍歷線程組樹,獲取根線程組 */
while ( group != null )
{
topGroup = group;
group = group.getParent();
}
/* 激活的線程數加倍 */
int estimatedSize = topGroup.activeCount() * 2;
Thread[] slackList = new Thread[estimatedSize];
/* 獲取根線程組的所有線程 */
int actualSize = topGroup.enumerate( slackList );
/* copy into a list that is the exact size */
Thread[] list = new Thread[actualSize];
System.arraycopy( slackList, 0, list, 0, actualSize );
return (list);
}
2、遍歷線程,比對名稱,找到需要尋找的線程
以下代碼可得到線程的名稱
String name = thread.getName();
java獲得當前線程有兩種方法,第一種是Thread.currentThread();誰知道另外一種?
另外一種是實現Runnable接口,implements Runnable
這種方法有兩個好處是
(1)適合多個相同程序代碼的線程去處理同一資源的情況,把虛擬CPU(線程)同程序的代碼,數據有效的分離,較好地體現了面向對象的設計思想。
(2)可以避免由於Java的單繼承特性帶來的局限。經常碰到這樣一種情況,即當要將已經繼承了某一個類的子類放入多線程中,由於一個類不能同時有兩個父類,所以不能用繼承Thread類的方式,那麼,這個類就只能採用實現Runnable接口的方式了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/290986.html