併發和多執行緒

2021-10-01 11:12:03 字數 734 閱讀 1582

併發(concurrency):某段時間內,多個任務被cpu交替處理。

並行(parallelism):cpu同時處理多個任務。

併發打破和程式的封閉性,具有以下挑戰:

1、併發程式之間有相互制約(對資源的爭搶和彼此的依賴)的關係。

2、併發執行緒執行過程不連貫、斷斷續續,需要儲存和切換現場。

3、設計合理的併發數,充分並合理利用cpu的執行能力才能真正發揮併發的優勢。

執行緒數量並不是越多越好,要和相應的cpu資源匹配,合適的執行緒數才能充分利用計算資源。

執行緒的五個狀態:new新建狀態、runnable就緒狀態、running執行狀態、blocked阻塞狀態、dead終止狀態。

執行緒被建立且未啟動時的狀態為new;執行緒呼叫start()方法之後進入就緒狀態為runnable;執行緒被分配cpu時間片,開始執行run()方法,執行緒進入執行狀態running;執行緒由於某些原因會進入阻塞狀態blocked;執行緒執行完畢,退出run()方法或異常退出即進入終止態dead。

有三類原因會讓running中的執行緒變成blocked:等待阻塞(呼叫wait方法)、主動阻塞(通過sleep、join主動讓出cpu執行權)、同步阻塞(需要等待其他執行緒釋放鎖,i/o阻塞、同步塊阻塞、鎖阻塞)

執行緒從blocked狀態通過「甦醒(sleep時間到了)」、「被喚醒(notify)」、「獲得鎖」進入的下乙個狀態是runnable,執行緒退出阻塞態進入了準備就緒狀態,等待cpu分配時間片後再次獲得執行的權利。

高併發和多執行緒

高併發和多執行緒 總是被一起提起,給人感覺兩者好像相等,實則高併發 多執行緒 多執行緒是完成任務的一種方法,高併發是系統執行的一種狀態,通過多執行緒有助於系統承受高併發狀態的實現。高併發是一種系統執行過程中遇到的一種 短時間內遇到大量操作請求 的情況,主要發生在web系統集中大量訪問或者socket...

多執行緒和併發 ThreadLocal

threadlocal相當於乙個容器,用於存放每個執行緒的區域性變數。threadlocal例項通常來說都是private static型別的。threadlocal可以給乙個初始值,而每個執行緒都會獲得這個初始化值的乙個副本,這樣才能保證不同的執行緒都有乙份拷貝。一般情況下,通過threadloc...

多執行緒併發

多執行緒併發主要有3個方面 1 同步器 主要有synchronized,reentrantlock 訊號量,門栓 countdownlatch 障柵 cyclicbarrier 交換器。2 同步容器 主要包括 對映 集 佇列 對映 concurrenthashmap,concurrentskipli...