Java基礎第二遍-10-多執行緒-概述
阿新 • • 發佈:2021-10-28
程序
- 分配程式在記憶體中的空間
- 正在執行中的程式
- 一個程序包含一個或多個執行緒,執行緒是程式執行的基本單元
- 每個執行緒都有自己執行的內容,是程式正要執行的內容
cpu
- 多個執行緒在執行的時候,單核cpu在,多個執行緒之間進行切換(時間片,切換是隨機的)分別執行執行緒,看似是多個執行緒在同時執行。
- 好處:可以同時執行多個程式
- 弊端:一旦執行程式過多,cpu切換時間會顯得很長,就會顯得很卡頓
Java是多執行緒執行的
JVM一啟動就有多個執行緒在執行
- main方法的主執行緒執行
- gc垃圾垃圾回收執行緒
執行緒的建立
- 建立一個類繼承Thread
- 重寫run方法
- 直接建立Thread的子類物件建立執行緒
- 呼叫start方法開啟執行緒並呼叫執行緒的任務run方法執行
為什麼要繼承Thread重寫run方法? - 建立執行緒的目的是為了開啟一條執行路徑,去執行指定的程式碼和其他程式碼實現同時執行,而執行的指定程式碼就是這個執行路徑的任務,JVM建立的主執行緒,的任務都定義在了主函式中。
- 而自定義的執行緒它的任務在哪呢?Thread類用於描述執行緒,執行緒是需要任務的,所以Thread類也對任務的描述。這個任務就通過Thread類中的run方法來體現,也就是說,run方法就是封裝自定義執行緒執行任務的函式。
- 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有什麼區別?
執行緒的狀態
建立->就緒->執行->完成->消亡