Java線程屬性詳解(Demo-Java基礎)

你好我是辰兮,很高興你能來閱讀,本篇文章繼續爲大家講解Java多線程之線程屬性,下面有案例的截圖和相關代碼可以自行實踐,相關的更多面試知識已經提前整理好文章可以閱讀學習,分享獲取新知,希望對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篇博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章