java中如何獲取線程名稱
java獲取線程名稱
調(diào)用MyThread中的方法
package cn.itcast.day09.getName; import cn.itcast.day09.getName.MyThread; /* 線程的名稱: 主線程:main 新線程:Thread-1,Thread-0,Thread-2 */ public class Demo01Thread { public static void main(String[] args) { //3.創(chuàng)建Thread類的子類對(duì)象 MyThread mt=new MyThread(); //調(diào)用Thread類中的方法start方法,開(kāi)啟新的線程,執(zhí)行run方法 mt.start(); new MyThread().start(); new MyThread().start(); System.out.println(Thread.currentThread().getName()); } }
package cn.itcast.day09.getName; /* 獲取線程的名稱: 1.使用Thread類中的方法getName() String gerName()返回該線程的名稱 2.可以先獲取到當(dāng)前正在執(zhí)行的線程,使用線程中的方法getName()獲取線程的名稱 static Thread currentThread() 返回對(duì)當(dāng)前正在執(zhí)行的線程對(duì)象的引用 */ public class MyThread extends Thread { // 重寫 Thread類中的run方法,設(shè)置線程任務(wù) public void run() { //獲取線程的名稱: //使用Thread類中的方法getName() // String name = getName(); // System.out.println(name); // static Thread currentThread() 返回對(duì)當(dāng)前正在執(zhí)行的線程對(duì)象的引用 // Thread t=Thread.currentThread(); // System.out.println(t); // // String name = t.getName(); // System.out.println(name); System.out.println(Thread.currentThread().getName()); } }
獲取線程 ID 和當(dāng)前線程
點(diǎn)睛
1 API
// 獲取線程唯一 ID public long getId() // 獲取線程名稱 public final String getName() // 當(dāng)前執(zhí)行線程的引用 public static native Thread currentThread()
2 說(shuō)明
線程的 ID 在整個(gè) JVM 進(jìn)程中都會(huì)是唯一的,并且從 0 開(kāi)始逐次遞增。
mian 線程的 getId() 并不等于0,這是因?yàn)樵谝粋€(gè) JVM 進(jìn)程啟動(dòng)的時(shí)候,實(shí)際上是開(kāi)辟了很多個(gè)線程,自增序列已經(jīng)有了一定的消耗,因此我們自己創(chuàng)建的線程并不是從0開(kāi)始的。
實(shí)戰(zhàn)
1 代碼
package concurrent; public class ThreadIDAndName { ? ? public static void main(String[] args) { ? ? ? ? Thread thread = new Thread() { ? ? ? ? ? ? public void run() { ? ? ? ? ? ? ? ? System.out.println(Thread.currentThread() == this); ? ? ? ? ? ? ? ? System.out.println("sub Thread ?name is " + Thread.currentThread().getName()); ? ? ? ? ? ? ? ? System.out.println("sub Thread is " + Thread.currentThread().getId()); ? ? ? ? ? ? } ? ? ? ? }; ? ? ? ? thread.start(); ? ? ? ? System.out.println("main Thread name is " + Thread.currentThread().getName()); ? ? ? ? System.out.println("main Thread id is " + Thread.currentThread().getId()); ? ? } }
2 測(cè)試
main Thread name is main true main Thread id is 1 sub Thread ?name is Thread-0 sub Thread is 12
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的引用和動(dòng)態(tài)代理的實(shí)現(xiàn)詳解
這篇文章主要介紹了Java中的引用和動(dòng)態(tài)代理的實(shí)現(xiàn)詳解,涉及Java中的引用類型,JVMGC的可達(dá)性分析,代理模式等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11Java局部?jī)?nèi)部類和匿名內(nèi)部類定義與用法實(shí)例分析
這篇文章主要介紹了Java局部?jī)?nèi)部類和匿名內(nèi)部類,結(jié)合實(shí)例形式分析了java局部?jī)?nèi)部類和匿名內(nèi)部類相關(guān)定義、原理與用法,需要的朋友可以參考下2019-08-08java中的HashSet與 == 和 equals的區(qū)別示例解析
HashSet是Java中基于哈希表實(shí)現(xiàn)的集合類,特點(diǎn)包括:元素唯一、無(wú)序和可包含null,本文給大家介紹java中的HashSet與 == 和 equals的區(qū)別,感興趣的朋友一起看看吧2025-02-02Java高并發(fā)場(chǎng)景下的 HttpClient請(qǐng)求優(yōu)化實(shí)現(xiàn)
本文主要介紹了Java高并發(fā)場(chǎng)景下的 HttpClient請(qǐng)求優(yōu)化實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01SpringBoot使用阿里oss實(shí)現(xiàn)文件上傳的流程步驟
云服務(wù)指的就是通過(guò)互聯(lián)網(wǎng)對(duì)外提供的各種各樣的服務(wù),比如像:語(yǔ)音服務(wù)、短信服務(wù)、郵件服務(wù)、視頻直播服務(wù)、文字識(shí)別服務(wù)、對(duì)象存儲(chǔ)服務(wù)等等,本文通過(guò)代碼示例和圖文給大家介紹了SpringBoot使用阿里oss實(shí)現(xiàn)文件上傳的流程步驟,需要的朋友可以參考下2025-01-01Java對(duì)象以Hash結(jié)構(gòu)存入Redis詳解
這篇文章主要介紹了Java對(duì)象以Hash結(jié)構(gòu)存入Redis詳解,和Java中的對(duì)象非常相似,卻不能按照J(rèn)ava對(duì)象的結(jié)構(gòu)直接存儲(chǔ)進(jìn)Redis的hash中,因?yàn)镴ava對(duì)象中的field是可以嵌套的,而Redis的Hash結(jié)構(gòu)不支持嵌套結(jié)構(gòu),需要的朋友可以參考下2023-08-08