1. 線程同步:
指線程之間所具有的一種制約關系,一個線程的執行依賴另外一個線程的消息,當它沒有得到另一個線程的消息時應等待,直到消息到達時才被喚醒。
2. 線程互斥:
指對於共享的進程系統資源,每個線程訪問時的排他性。當有若干個線程都要使用某一個共享資源時,任何時刻最多只允許一個線程去使用,其他線程必須等待,知道占用占用資源者釋放該資源。線程互斥可以看成是一種特殊的線程同步。
3. 線程間的同步方法大體可以分為兩類:
用戶模式和內核模式
a 用戶模式:原子操作,臨界區
臨界區(Critical Section):適合一個進程內的多線程訪問公共區域或代碼段時使用
b 內核模式:事件、信號量、互斥量
事件(Event):通過線程間觸發事件實現同步互斥
互斥量 (Mutex):適合不同進程內多線程訪問公共區域或代碼段時使用,與臨界區相似
信號量(Semaphore):與臨界區和互斥量不同,可以實現多個線程同時訪問公共區域數據,原理與操作系統中PV操作類似,先設置一個訪問公共區域的線程最大連接數,每有一個線程訪問共享區資源數就減一,直到資源數小於等於零
內核模式就是利用系統內核對象的單一性來進行同步,使用時需要切換內核態與用戶態,而用戶模式就是不需要切換內核態,只在用戶態完成操作
更多java學習資料可關注:itheimaGZ獲取