一、什么是多線程
線程是程序執行的一條路徑, 一個進程中可以包含多條線程
多線程並發執行可以提高程序的效率, 可以同時完成多項工作
二、多線程的應用場景
- 迅雷開啟多條線程一起下載
- QQ同時和多個人一起視頻
- 服務器同時處理多個客戶端請求
三、多線程並行和並發的區別
- 並行:是兩個任務同時運行,就是甲任務進行的同時,乙任務也在進行。(需要多核CPU)
- 比如我跟兩個網友聊天,左手操作一個電腦跟甲聊,同時右手用另一台電腦跟乙聊天,這就叫並行。
- 並發:指兩個任務都請求運行,而處理器只能按受一個任務,就把這兩個任務安排輪流進行,由於時間間隔較短,使人感覺兩個任務都在運行。(表面看是CPU在同時執行多個任務,其實實際上是因為CPU瞬間切換到其他任務的速度特別快,在不同的任務之間一直在不停的切換,給不同的任務分配了不同的時間。)
- 如果用一台電腦我先給甲發個消息,然后立刻再給乙發消息,然后再跟甲聊,再跟乙聊。這就叫並發。
四、Java程序運行原理和JVM的啟動是多線程的嗎?
- Java程序運行原理
- Java命令會啟動java虛擬機,啟動JVM,等於啟動了一個應用程序,也就是啟動了一個進程。該進程會自動啟動一個 “主線程” ,然后主線程去調用某個類的 main 方法。
- JVM的啟動是多線程的嗎
- JVM啟動至少啟動了垃圾回收線程和主線程,所以是多線程的。
package com.soar.thread;
public class Demo1_Thread {
/* * 證明JVM是多線程的 */
public static void main(String[] args) {
for (int i = 0; i < 1000; i++) {
new Demo();
}
for (int i = 0; i < 1000; i++) {
System.out.println("我是主線程的執行代碼");
}
}
}
class Demo{
@Override
public void finalize() {
System.out.println("垃圾被清掃了");
}
}
