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-11
Java局部?jī)?nèi)部類和匿名內(nèi)部類定義與用法實(shí)例分析
這篇文章主要介紹了Java局部?jī)?nèi)部類和匿名內(nèi)部類,結(jié)合實(shí)例形式分析了java局部?jī)?nèi)部類和匿名內(nèi)部類相關(guān)定義、原理與用法,需要的朋友可以參考下2019-08-08
java中的HashSet與 == 和 equals的區(qū)別示例解析
HashSet是Java中基于哈希表實(shí)現(xiàn)的集合類,特點(diǎn)包括:元素唯一、無(wú)序和可包含null,本文給大家介紹java中的HashSet與 == 和 equals的區(qū)別,感興趣的朋友一起看看吧2025-02-02
Java高并發(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-01
SpringBoot使用阿里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-01
Java對(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

