線程基本屬性和方法


線程的屬性

包括線程:

  • 編號(ID)
  • 名稱(Name)
  • 線程類別(Daemon)
  • 優先級(Priority)

線程編號ID:類型long,用於標識不同的線程,編號唯一性只存在java虛擬機的一次運行有效

線程名稱Name:類型String,默認Thread-線程編號,設置該屬性有助於線程調試和問題定位。

線程類別Daemon:類型boolean,值為true表示該線程為守護線程,否則為用戶線程,默認值與相應線程的父線程該屬性值相同,該屬性必須在線程啟動前設置!否則會報錯

優先級Priority:類型int,該屬性本質上是給線程調度器的提示,用於表示應用程序那個線程優先運行。java定義了1~10的10個優先級別。默認值為5(普通優先級別)。對應一個具體的線程而言,優先級別的默認值與父線程相同。

注:線程並不保證執行順序按優先級進行!優先級使用不當可能導致某些線程用於無法得到運行!一般情況下不設置即可。

用戶線程(User Thread)和守護線程(Daemon):

用戶線程會阻止Java虛擬機的正常停止,即一個Java虛擬機只有在其所有的用戶線程運行都結束的情況下才能正常停止。
守護線程不會影響Java虛擬機的正停止,即應用程序中有守護線程在運行也不會影響Java虛擬機的正常停止。因此守護線程通常用於執行一些重要性不是很高的任務,如監視其他線程的運行情況。

線程常用方法:

currentThread(): 返回當前線程,當前代碼的執行線程

void run(): 實現線程任務處理邏輯

void start(): 啟動相應線程

void join(): 等待相應線程結束,若線程A調用B的join法法,那么線程A會被暫停,直到線程B運行結束。

static void yield(): 使當前線程自動放棄對處理器的占用,可能導致當前線程被暫停

注:此方法不可靠,被調用時線程仍可能繼續運行!(視系統而定)

static void sleep(long millis):使當前線程休眠指定時間

簡易定時器:

public class SimpleTimer {
  private static int count;

  public static void main(String[] args) {
    count = args.length >= 1 ? Integer.valueOf(args[0]) : 60;
    int remaining;
    while (true) {
      remaining = countDown();
      if (0 == remaining) {
        break;
      } else {
        System.out.println("Remaining " + count + " second(s)");
      }

      try {
        Thread.sleep(1000);
      } catch (InterruptedException e) {
        // 什么也不做;
      }
    }
    System.out.println("Done.");
  }

  private static int countDown() {
    return count--;
  }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM