多執行緒進階詳解
阿新 • • 發佈:2021-01-18
多執行緒進階詳解
文章目錄
一、入門介紹
所處位置
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的區別