【JUC系列】0一、之大話併發

學習方法

學習技術的方法都很相似,大部分都有着相似的步驟:算法

  • 場景
  • 需求
  • 解決方案
  • 應用
  • 原理

併發的目的

  • 充分利用CPU 和 I/O資源
  • 提升效率

併發的維度

  • 分工
  • 同步/協做
  • 互斥

分工

  • 線程池
  • fork/join
  • future
  • Guarded Suspension 保護性暫掛模式
  • Balking模式
  • Thread per Message 模式
  • 生產者-消費者模式
  • Worker thread模式
  • 兩階段終止模式
    -其餘模式

同步/協做

  • 信號量
  • Monitor
    • Synchronized
    • condition & lock
  • CountDownLatch

線程的5個狀態

線程的生命週期中,存在着如下幾個狀態:編程

  • new:建立線程,此時只是一個對象,線程並無產生
  • runnable:new以後的線程,經過start()方法開始,進入runnable 狀態。便可執行狀態,他是running狀態的預備狀態,等待cup的調度
  • running:
  • blocked:所阻塞狀態
  • terminated:線程結束的狀態,致使緣由:
    • 一、線程正常結束,結束生命週期;
    • 二、JVM crash
    • 三、線程運行出錯

進程和線程的區別

進程是受操做系統管理的基本運行單元微信

線程是在進程中獨立運行的子任務多線程

進程間如何通信,線程間如何通信

多線程特色

  • 能夠在同一時間內運行更多不一樣種類的任務
  • 多線程是異步的
  • 線程的調用是隨機的

測試上下文切換次數和時長

  • Lmbench3 測試時長
  • vmstat 測試切換次數

減小上下文切換

  • 沒法併發編程
  • CAS算法
  • 使用最少線程,線程池

設計思想

模板模式

每一個線程Thread 步驟都是 start->run 其中run的實現細節由實現類決定,即模板模式併發

策略模式

接口只是定義(策略)的自己,實現子類能夠選擇不一樣的實現邏輯。異步

比如說:支付,接口我只定義支付pay這個方法,子實現類1能夠是支付寶支付的方式;子實現類2能夠是微信支付的方式;學習

在Thread類中,Thread的建立通常都是說有兩種,測試

  • 一種是建立Thread,
  • 一種是實現runnable接口。
  • callable

其實本質上前者是重寫run方法,後者是實現runnable接口中的run(), 並把實例做爲構造Thread的參數
Runnable接口便是策略模式的體現
JDBC中 查詢微信支付

相關文章
相關標籤/搜索