你好我是辰兮,很高興你能來閱讀,本篇文章繼續爲大家講解Java多線程之線程屬性,下面有案例的截圖和相關代碼可以自行實踐,相關的更多面試知識已經提前整理好文章可以閱讀學習,分享獲取新知,希望對Java初學者有幫助。
1.Java線程的實現方式:
Java線程的實現方式詳解2.線程進程基礎知識參考:
進程線程的面試問題小結3.線程面試常見問題參考:
Java常見多線程基礎面試問題
一、name屬性
先創建一個線程
/**
*創建類繼承Thread,重寫run方法,在run方法中定義線程體
*/
public class MyThread extends Thread{
public void run() {
//定義線程體
}
}
//創建線程
Thread t = new MyThread();
①設置線程的name屬性
//通過線程對象調用setName方法設置線程名稱
t.setName("線程名");
②在線程體中獲取線程name屬性
//在實現Runnable接口的線程類的線程體:
String name = Thread.currentThread().getName();
//在繼承Thread類的線程類的線程體:
String name = this.getName();
二、線程優先級
線程是具有優先級的.優先級高的線程具有比優先級低的線程有更多的執行機會,而並不是優先級高的先執行優先級低的後執行。
線程的優先級一共有10級,最低級爲1級,最高級爲10級,默認5級。
//獲取線程優先級
int p = t.getPriority();
//設置線程優先級
t.setPriority(int p);
三、守護線程
線程分類 | 作用 |
---|---|
用戶線程 | 具有獨立業務流的線程 |
守護線程 | 爲用戶線程提供服務 |
守護線程特性:
- 當所有用戶線程都執行結束,即使守護線程線程體沒有執行完也會停止;
- 如果有任何一個用戶線程沒有執行結束,即使守護線程執行結束了也不會停止,進入等待狀態,直到最後一個用戶線程執行結束。 設置守護線程:
ps:打個比方,守護線程好比燒烤攤的老闆,用戶線程就是顧客,當顧客沒吃完,就算老闆到了下班的時間老闆也要等待。
//判斷當前線程是否爲守護線程?
boolean b = t.isDaemon();
//設置守護線程
t.setDaemon(true);
守護線程又稱爲後臺線程,精靈線程,比如,Java 的垃圾回收線程是守護線程,main 線程不是守護線程。其特徵是前臺線程全部死亡,守護線程自動死亡。
四、主線程
主方法本身也是一個獨立的線程,線程名默認爲main
主線程非守護線程。
ps:參考上篇文章的執行run()方法是在當前線程內執行,我們可以獲取出其線程名稱。當前線程名稱爲main.
上述截圖代碼請參考,自行復制操作實踐
public class SellTickets {
static int count = 100;
static Runnable r = new Runnable() {
@Override
public void run() {
while(count > 0) {
count--;
System.out.println(Thread.currentThread().getName() + "售出了 一張票,剩餘" + count);
}
}
};
public static void main(String[] args) {
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
Thread t3 = new Thread(r);
}
}
The best investment is to invest in yourself
2020.05.30 記錄辰兮的第71篇博客