線程八大基礎核心六(線程屬性)

1.引子

在java多線程併發編程中,有八大基礎核心。考考你:
看看都有哪八大基礎核心呢?它們分別是:
    1.建立線程的方式
    2.線程啓動
    3.線程中止
    4.線程生命週期
    5.線程相關的方法
    6.線程相關的屬性
    7.線程異常處理
    8.線程安全java

今天咱們從第六個基礎核心開始:線程相關屬性編程

2.考考你

#前情回顧
  在咱們平常多線程編程中,須要關心線程的線程優先級有:
  線程Id
  線程名稱
  是不是守護線程
  線程優先級安全

#考考你
  1.你知道線程Id的做用嗎?
  2.你知道線程名稱的做用嗎?
  3.你知道什麼是守護線程嗎?
  4.你知道守護線程與用戶線程的區別嗎?
  5.你知道有哪些線程優先級嗎?
  6.你知道爲何咱們在實際開發中,不該該依賴線程優先級嗎?多線程

3.案例

3.1.線程Id

簡述:併發

1.線程Id,是線程的惟一身份標識編程語言

2.用於JVM執行過程當中,識別線程spa

package com.anan.thread.threadproperty;操作系統

/**
 * 線程屬性:Id
 * 1.線程Id,是線程的惟一身份標識
 * 2.用於JVM執行過程當中,識別線程
 */
public class ThreadIdDemo {線程

    public static void main(String[] args) {
        // 建立線程對象
        Runnable r1 = new MyRunnable();
        Thread t1 = new Thread(r1);
        t1.start();3d

        // 打印主線程main的Id
        System.out.println("【主】線程Id:" + Thread.currentThread().getId());
    }

}

/**
 * 實現Runnable接口,建立線程
 */
class MyRunnable implements Runnable{
    public void run() {
        System.out.println("【子】線程Id:" + Thread.currentThread().getId());
    }
}

彩蛋

1.咱們知道線程Id是從1依次遞增的

2.那麼主線程main的編號是1,爲何咱們建立的新線程編號不從2開始?

3.2.線程名稱

簡述:

1.線程名稱,能夠在建立線程對象的時候設置(有默認名稱)

2.用於在開發過程當中,方便調試,或者友好閱讀

package com.anan.thread.threadproperty;

import java.util.concurrent.TimeUnit;

/**
 * 線程屬性:Id
 * 1.線程名稱,能夠在建立線程對象的時候設置(有默認名稱)
 * 2.用於在開發過程當中,方便調試,或者友好閱讀
 */
public class ThreadNameDemo {

    public static void main(String[] args) throws InterruptedException{
        // 建立兩個線程對象
        Runnable r1 = new MyRunnable1();
        // 使用默認線程名稱
        Thread t1 = new Thread(r1);
        t1.start();

        // 休眠1秒,實現順序打印
        TimeUnit.SECONDS.sleep(1);

        // 指定線程名稱
        Thread t2 = new Thread(r1,"my-thread-2");
        t2.start();
    }

}

/**
 * 實現Runnable接口,建立線程
 */
class MyRunnable1 implements Runnable{
    public void run() {
        System.out.println("線程名稱:" + Thread.currentThread().getName());
    }
}

4.討論分享

#考考你答案
1.你知道線程Id的做用嗎?
  1.1.線程Id,是線程的惟一身份標識
  1.2.用於JVM執行過程當中,識別線程
  
2.你知道線程名稱的做用嗎?
  2.1.線程名稱,能夠在建立線程對象的時候設置(有默認名稱)
  2.2.用於在開發過程當中,方便調試,或者友好閱讀
  
3.你知道什麼是守護線程嗎?
  3.1.守護線程,是在後臺運行的線程
  
4.你知道守護線程與用戶線程的區別嗎?
  4.1.咱們日常開發,建立的都是用戶線程
  4.2.守護線程,與用戶線程整體沒有區別
  4.3.區別在於:
   4.3.1.守護線程,不會影響JVM的退出執行
   4.3.2.用戶線程,當JVM退出的時候,須要等待用戶線程執行完成
  
5.你知道有哪些線程優先級嗎?
  5.1.線程優先級,表示獲取CPU執行時間機會的多少,優先級越高,越有機會
  5.2.在java編程語言中,總共有10種優先級設置:
   最小優先級:1
   默認優先級:5
   最大優先級:10

   6.你知道爲何咱們在實際開發中,不該該依賴線程優先級嗎?   6.1.緣由一:     java的線程,是基於操做系統內核線程實現   6.2.緣由二:     不一樣的操做系統,優先級定義不同   6.3.緣由三:     在不一樣的操做系統上,java線程優先級映射到操做系統內核會不同,所以咱們不該該依賴線程的優先級

相關文章
相關標籤/搜索