1. 程式人生 > 其它 >Java基礎第二遍-10-多執行緒-概述

Java基礎第二遍-10-多執行緒-概述

程序

  1. 分配程式在記憶體中的空間
  2. 正在執行中的程式
  3. 一個程序包含一個或多個執行緒,執行緒是程式執行的基本單元
  4. 每個執行緒都有自己執行的內容,是程式正要執行的內容

cpu

  1. 多個執行緒在執行的時候,單核cpu在,多個執行緒之間進行切換(時間片,切換是隨機的)分別執行執行緒,看似是多個執行緒在同時執行。
  2. 好處:可以同時執行多個程式
  3. 弊端:一旦執行程式過多,cpu切換時間會顯得很長,就會顯得很卡頓

Java是多執行緒執行的

JVM一啟動就有多個執行緒在執行

  1. main方法的主執行緒執行
  2. gc垃圾垃圾回收執行緒

執行緒的建立

  1. 建立一個類繼承Thread
  2. 重寫run方法
  3. 直接建立Thread的子類物件建立執行緒
  4. 呼叫start方法開啟執行緒並呼叫執行緒的任務run方法執行
    為什麼要繼承Thread重寫run方法?
  5. 建立執行緒的目的是為了開啟一條執行路徑,去執行指定的程式碼和其他程式碼實現同時執行,而執行的指定程式碼就是這個執行路徑的任務,JVM建立的主執行緒,的任務都定義在了主函式中。
  6. 而自定義的執行緒它的任務在哪呢?Thread類用於描述執行緒,執行緒是需要任務的,所以Thread類也對任務的描述。這個任務就通過Thread類中的run方法來體現,也就是說,run方法就是封裝自定義執行緒執行任務的函式。
  7. run方法中就是要執行的內容
package com.bixiangdong.thread;

class Demo001 extends Thread{
    Demo001(String name){
        super(name);
    }
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("...name"+getName());
            System.out.println("獲取當前執行緒名稱"+currentThread().getName());
        }
    }
}

public class Demo01 {
    public static void main(String[] args) {
        new Demo001("執行緒1").start();//給執行緒賦名字
        new Demo001("執行緒2").start();
        //獲取主執行緒名稱
        new Demo001("執行緒2").run();
    }
}

呼叫run和呼叫start有什麼區別?

執行緒的狀態

建立->就緒->執行->完成->消亡