查看線程名是很簡單的,調用Thread.currentThread().getName()
便可。java
public class MyThreadDemo { public static void main(String[] args) { MyThread myThread = new MyThread(); //帶參構造方法給線程起名字 Thread thread1 = new Thread(myThread, "關注公衆號Java3y"); Thread thread2 = new Thread(myThread, "qq羣:742919422"); thread1.start(); thread2.start(); // 打印當前線程的名字 System.out.println(Thread.currentThread().getName()); } }
守護線程是爲其餘線程服務的數據庫
守護線程有一個特色:安全
使用線程的時候要注意的地方spa
setDaemon(boolean on)
線程優先級高僅僅表示線程獲取的CPU時間片的概率高,但這不是一個肯定的因素!操作系統
線程的優先級是高度依賴於操做系統的,Windows和Linux就有所區別(Linux下優先級可能就被忽略了)~線程
能夠看到的是,Java提供的優先級默認是5,最低是1,最高是10:設計
線程有3個基本狀態:執行、就緒、阻塞3d
Thread上不少的方法都是用來切換線程的狀態的,code
調用sleep方法會進入計時等待狀態,等時間到了,進入的是就緒狀態而並不是是運行狀態!(注意sleep方法不會釋放鎖)對象
調用yield方法會先讓別的線程執行,可是不確保真正讓出
意思是:我有空,能夠的話,讓大家先執行
調用join方法,會等待該線程執行完畢後才執行別的線程~
線程中斷在以前的版本有stop方法,可是被設置過期了。如今已經沒有強制線程終止的方法了!
因爲stop方法可讓一個線程A終止掉另外一個線程B
總而言之,Stop方法太暴力了,不安全,因此被設置過期了。
咱們通常使用的是interrupt來請求終止線程~
Thread t1 = new Thread( new Runnable(){ public void run(){ // 若未發生中斷,就正常執行任務 while(!Thread.currentThread.isInterrupted()){ // 正常任務代碼…… } // 中斷的處理代碼…… doSomething(); } } ).start();
再次說明:調用interrupt()並非要真正終止掉當前線程,僅僅是設置了一箇中斷標誌。這個中斷標誌能夠給咱們用來判斷何時該幹什麼活!何時中斷由咱們本身來決定,這樣就能夠安全地終止線程了!
interrupt線程中斷還有另外兩個方法(檢查該線程是否被中斷):[檢查中斷是使用interrupt的用途之一]