1. 程式人生 > 其它 >多執行緒進階詳解

多執行緒進階詳解

技術標籤:併發程式設計多執行緒併發程式設計java多程序

多執行緒進階詳解

文章目錄

一、入門介紹

所處位置
在這裡插入圖片描述
atomic是原子性的意思
Runnable 沒有返回值,而且效率相對於Callable來說低一些

二、程序與執行緒

程序:一個可以執行的軟體跑起來就會開啟一個程序,一個程序包含多個執行緒,至少包含一個

JAVA預設有幾個執行緒?
2個,main和GC

Java真的可以開啟執行緒嘛?
不可以,比如start()方法,可以走進去去看原始碼,首先把當前執行緒加入到了一個執行緒組裡面去,最後呼叫一個native()本地的c++方法建立的執行緒,java無法直接操作硬體

執行緒:開啟了一個QQ,然後QQ跟別人聊天就是一個執行緒

併發、並行是什麼?
併發才存在多執行緒,多個執行緒同時操作一個資源,一個CPU
並行是多個執行緒一起走,多個CPU

/**
 * @author :Yan Guang
 * @date :Created in 2021/1/17 17:59
 * @description: 檢視電腦CPU核數
 */
public class Demo {
    public static void main(String[] args) {
        //cpu密集型、io密集型
        System.out.println(Runtime.
getRuntime().availableProcessors()); } }

併發程式設計的本質:充分利用cpu資源

執行緒有幾個狀態?
6個

public enum State {
      
         新生
        NEW,

  
         執行
        RUNNABLE,

      
         阻塞
        BLOCKED,

      
         等待,死死的等
        WAITING,

      
         超市等待,只等待一段時間
        TIMED_WAITING,
		
		終止
        TERMINATED;
}

wait和sleep的區別