總結-Java多執行緒與高併發簡記
阿新 • • 發佈:2018-11-13
1、什麼是多執行緒?
一個程序可以開啟多個執行緒,每個執行緒可以併發/並行執行不同任務。
2、Java多執行緒實現方式
2.1、繼承Thread類
2.2、實現Runnable介面方式實現多執行緒
2.3、使用ExecutorService、Callable、Future實現有返回結果的多執行緒
3、多執行緒的優缺點
優點:提高資源利用率;提升程式執行效率;
缺點:開啟執行緒會佔用一定記憶體,降低程式效能;執行緒越多,CPU開銷越大
4、執行緒的狀態
4.1、新建狀態(New):執行緒被建立
4.2、就緒狀態(Runnable):可執行狀態,執行緒物件呼叫start()啟動
4.3、執行狀態(Running):獲取CPU進行執行。執行緒只能從就緒狀態到執行狀態
4.4、阻塞狀態(Blocked):執行緒因為某種原因放棄CPU使用權,暫時停止執行。阻塞的三種狀態:
等待阻塞:呼叫wait()方法
同步阻塞:獲取synchronized同步鎖失敗
其他阻塞:呼叫執行緒sleep()或join()或傳送I/O請求
4.5、死亡狀態(Dead):執行緒執行結束退出
5、什麼是併發
併發:單個CPU,通過CPU排程演算法,處理多個任務的能力
並行:多個CPU,同時並處理相同的多個任務
6、Java如何實現高併發
6.1、樂觀鎖:適用於讀不會衝突,寫會衝突。同時讀的頻率遠大於寫
6.3、ConcurrentHashMap