執行緒 鎖 預備知識

2021-09-13 14:20:48 字數 878 閱讀 8507

核心數和執行緒數是一比一的關係 

使用了超執行緒技術後核心數:執行緒數變為 1:2的關係

為什麼我們開發的時候允許很多執行緒同時跑呢?就是因為cpu時間片輪轉機制,也叫rr排程。它給每個執行緒分配乙個時間段,當它時間段結束後,它就切換到其它的執行緒執行,如果在時間段內就執行完,那麼直接切換到其它執行緒,它就是通過這種執行緒的上下文切換,來實現多個執行緒同時執行。

優點

注意事項

即執行緒p0已經占用了a資源,又請求b資源,而b資源已經被占用,於是p0必須等待,而又保持對a資源的占用

執行緒對資源的訪問是排他性的

即p0等待p1占用的資源,p1等待p0資源

執行緒獲得資源之後,在沒有結束之前,不能被其它執行緒剝奪。

任務沒有被阻塞,由於某些條件無法滿足,導致一直重複嘗試、失敗

多個執行緒因爭奪資源導致互相等待,都無法推進下去。

產生死鎖的原因其實是獲取鎖的順序不一致導致的。

要避免死鎖發生就是要保證獲取鎖的順序一致。

乙個或者多個執行緒因為種種原因無法獲得所需要的資源,導致一直無法執行的狀態。例如:優先度低的執行緒總是得不到機會執行。

所有執行緒輪流獲取cpu使用權,平均分配時間

優先讓優先順序高的執行緒獲取資源,相同則隨機選乙個。

servlet不是執行緒安全,不能保證共享變數的執行緒安全。

struts2的action是執行緒安全的,每次請求都會new 乙個action

springmvc的controller非執行緒安全,不能保證共享變數的執行緒安全。

併發程式設計 鎖膨脹(預備知識)

此篇內容需要物件頭的知識,可檢視文章 目錄 併發程式設計之鎖膨脹預備知識 一 無鎖 二 輕量鎖 三 header header new header 四 執行緒加鎖synchronized 五 執行緒釋放鎖 四中的t1釋放鎖 無鎖分為兩種情況。無鎖可偏向 101 無鎖不可偏向 001 在無鎖不可偏向...

知識星球 預備知識

1.tenorflow 安裝 參考 tensorflow安裝教程 tensorflow 安裝教程 tensorflownews 2.tensrflow基礎 關注圖 會話 tensor 變數 feed和fetch。使用圖 graphs 來表示計算任務 在被稱之為會話 session 的上下文 cont...

Python預備知識

02 執行python程式 2.3.3 python 的 ide pycharm 03 配置pycharm 3.1.2 安裝和啟動步驟 3.1.3 設定專業版啟 標 3.1.4 解除安裝之前版本的 pycharm 3.2 匯入配置資訊 3.3 開啟乙個 python 專案 3.4 新建乙個專案 3....