多線程同步和互斥的幾種實現方式


1. 線程同步:
        指線程之間所具有的一種制約關系,一個線程的執行依賴另外一個線程的消息,當它沒有得到另一個線程的消息時應等待,直到消息到達時才被喚醒。

2. 線程互斥:
        指對於共享的進程系統資源,每個線程訪問時的排他性。當有若干個線程都要使用某一個共享資源時,任何時刻最多只允許一個線程去使用,其他線程必須等待,知道占用占用資源者釋放該資源。線程互斥可以看成是一種特殊的線程同步。

3. 線程間的同步方法大體可以分為兩類:
        用戶模式和內核模式
                a 用戶模式:原子操作,臨界區

                        臨界區(Critical Section):適合一個進程內的多線程訪問公共區域或代碼段時使用

                b 內核模式:事件、信號量、互斥量

                        事件(Event):通過線程間觸發事件實現同步互斥

                        互斥量 (Mutex):適合不同進程內多線程訪問公共區域或代碼段時使用,與臨界區相似
                        
                        信號量(Semaphore):與臨界區和互斥量不同,可以實現多個線程同時訪問公共區域數據,原理與操作系統中PV操作類似,先設置一個訪問公共區域的線程最大連接數,每有一個線程訪問共享區資源數就減一,直到資源數小於等於零

                內核模式就是利用系統內核對象的單一性來進行同步,使用時需要切換內核態與用戶態,而用戶模式就是不需要切換內核態,只在用戶態完成操作

更多java學習資料可關注:itheimaGZ獲取


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM