1. 程式人生 > >總結-Java多執行緒與高併發簡記

總結-Java多執行緒與高併發簡記

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.2、String.intern()字串池:對使用者sessionMap加鎖類似於資料庫中表鎖和行鎖

     6.3、ConcurrentHashMap