1. 程式人生 > 其它 >Thread類中的常用方法及執行緒的優先順序

Thread類中的常用方法及執行緒的優先順序

* 測試Thread類中的常用方法:
* 1.start() :啟動當前執行緒;呼叫當前執行緒的run()
* 2.run() :通常需要重寫Thread類中的此方法,將建立的執行緒要執行的操作宣告在此方法中
* 3.currentThread():靜態方法,返回程式碼當前執行的執行緒
* 4.getName():獲取當前執行緒的名字
* 5.setName():設定當前執行緒的名字
* 6.yield():釋放當前CPU的執行權
* 7.join():線上程a中呼叫執行緒b的join(),此時執行緒a就進入阻塞狀態,直到執行緒b完全執行完以後,執行緒b才結束阻塞狀態
* 8.stop():已過時。當執行此方法時,強制結束當前執行緒。

* 9.sleep(long millitime):讓當前執行緒 “睡眠” 指定的millitime(毫秒)
* 10.isAlive():判斷當前執行緒是否還存活
*
*
* 執行緒的優先順序:
* 1.
* MAX_PRIORITY:10(最高)
* MIN_PRIORITY:1(最低)
* NORM_PRIORITY:5(預設)
*2.如何獲取和設定當前執行緒的優先順序
* getPriority()
* setPriority(int p)
*說明:高優先順序的執行緒要搶佔低優先順序執行緒cpu的執行權,但是隻是從概率上講,高優先順序的執行緒高概率被執行,並不意味著只有當高優先順序
* 的執行緒執行完畢以後,低優先順序的執行緒才執行。

*

 1 package com.atfu.java01;
 2 
 3 /**
 4  *
 5  * @author fu jingchao
 6  * @creat 2021/10/14-22:16
 7  */
 8 class MethodTest extends Thread{
 9 
10     @Override
11     public void run() {
12         for (int i = 0; i < 100; i++) {
13             if(i % 2 == 0){
14                 System.out.println(Thread.currentThread().getName() + ":" + i);
15 } 16 if(i % 20 == 0){ 17 yield(); 18 } 19 } 20 System.out.println("執行緒一的優先順序為:"+Thread.currentThread().getPriority()); 21 } 22 } 23 24 25 26 public class ThreadMethodTest { 27 public static void main(String[] args) { 28 MethodTest m1 = new MethodTest(); 29 m1.setName("執行緒一"); 30 m1.start(); 31 32 //給主執行緒命名 33 Thread.currentThread().setName("主執行緒"); 34 for (int i = 0; i < 100; i++) { 35 if(i % 2 == 0){ 36 System.out.println(Thread.currentThread().getName() + ":" + i); 37 } 38 if(i == 20){ 39 try { 40 m1.join(); 41 } catch (InterruptedException e) { 42 e.printStackTrace(); 43 } 44 } 45 } 46 System.out.println("主執行緒的優先順序為:"+Thread.currentThread().getPriority()); 47 } 48 }


此為本人學習筆記,若有錯誤,請不吝賜教