併發基礎三 synchronized

2021-08-15 18:03:01 字數 688 閱讀 1595

把**塊宣告為 synchronized,有兩個重要後果,通常是指該**具有 原子性(atomicity)和 可見性(visibility)。

1. 原子性:乙個操作或多個操作要麼全部執行完成且執行過程不被中斷,要麼就不執行

2. 可見性:當乙個執行緒修改了該變數的值,另外乙個執行緒可以立刻得知

1. 普通同步方法:鎖物件預設是 this

public synchronized

void methodaaa()

2. 同步**塊:鎖物件可以是任意的物件
public

void

methodaaa()

}public

void

method3(someobject so)

}

class

fooimplements

runnable

}//…..

}

3. 靜態同步方法:鎖物件是當前類的class物件
class foo

public

void

methodbbb()

}

它無法中斷乙個正在等候獲得鎖的執行緒

也無法通過投票得到鎖,如果不想等下去,也就沒法得到鎖

併發基礎 11 併發 容器

要實現乙個執行緒安全的佇列有兩個方式 一種是使用阻塞演算法,另一種是使用非阻塞演算法。阻塞演算法 使用阻塞演算法的佇列可以用乙個鎖 入隊和出隊同一把鎖 或兩把鎖 入隊和出隊用不同的鎖 來實現。非阻塞的實現方式則可以使用迴圈cas的方式來實現。concurrentlinkedqueue非阻塞執行緒安全...

執行緒併發基礎

多核心 chip mutilprocessors 單晶元多處理器 cmp 多執行緒 simultaneous multithreading smt 如果在時間片結束時,程序還在執行,則cpu將被剝奪並分配給另乙個程序。如果程序在時間片結束之前阻塞或結束,則cpu當即進行切換。排程程式做的是維護一張就...

併發程式設計基礎

從本質上來說,作業系統其實就是人為編寫的一種軟體,只不過它是一種操作計算機系統的軟體,所有的應用型軟體幾乎都要通過作業系統才能執行來執行功能,沒有不依靠作業系統就能執行功能的應用軟體 除非你真的很厲害,能夠自己操作相應的儲存器 cpu等硬體來提 用軟體的執行條件 一方面,它為應用軟體和使用者提供了操...