Java_基礎—多線程的引入/並發和並行的區別


一、什么是多線程

線程是程序執行的一條路徑, 一個進程中可以包含多條線程
多線程並發執行可以提高程序的效率, 可以同時完成多項工作

二、多線程的應用場景

  • 迅雷開啟多條線程一起下載
  • 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("垃圾被清掃了");
    } 

}


免責聲明!

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



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