多執行緒 happens before 先行發生原則

2021-09-11 02:31:19 字數 658 閱讀 2751

這8條規則中,前4條規則是比較重要的,後4條規則都是顯而易見的。

下面我們來解釋一下前4條規則:

對於程式次序規則來說,我的理解就是一段程式**的執行在單個執行緒中看起來是有序的。注意,雖然這條規則中提到「書寫在前面的操作先行發生於書寫在後面的操作」,這個應該是程式看起來執行的順序是按照**順序執行的,因為虛擬機器可能會對程式**進行指令重排序。雖然進行重排序,但是最終執行的結果是與程式順序執行的結果一致的,它只會對不存在資料依賴性的指令進行重排序。因此,在單個執行緒中,程式執行看起來是有序執行的,這一點要注意理解。事實上,這個規則是用來保證程式在單執行緒中執行結果的正確性,但無法保證程式在多執行緒中執行的正確性。

第二條規則也比較容易理解,也就是說無論在單執行緒中還是多執行緒中,同乙個鎖如果出於被鎖定的狀態,那麼必須先對鎖進行了釋放操作,後面才能繼續進行lock操作。

第三條規則是一條比較重要的規則,也是後文將要重點講述的內容。直觀地解釋就是,如果乙個執行緒先去寫乙個變數,然後乙個執行緒去進行讀取,那麼寫入操作肯定會先行發生於讀操作。

多執行緒 多執行緒原理

我們首先要知道什麼是多執行緒,說白了就是多個執行緒,執行緒是什麼呢,其實就是程序執行的途徑,那麼說道這裡我們又引入了乙個新的名字,就是程序,那麼我們來看看什麼是程序,其實我們自己也能看到,啟動電腦的任務管理器,我們就可以看到程序選項,裡面是我們電腦所有的程序,我們會發現有很多的程序.簡單地說就是程序...

多執行緒(一) tomcat 多執行緒

web server允許的最大執行緒連線數還受制於作業系統的核心引數設定,通常windows是2000個左右,linux是1000個左右。1.編輯tomcat安裝目錄下的conf目錄下的server.xml檔案 maxthreads 150 表示最多同時處理150個連線,tomcat使用執行緒來處理...

多執行緒 理解多執行緒(一)

程序 程序是cpu分配資源的基本單位 執行緒 執行緒是cpu排程的基本單位 資源分配給程序,所有執行緒共享該程序的資源 當執行緒數大於cpu的數量,會出現時間片的輪詢。cpu時間片是直接分配給執行緒的,執行緒拿到cpu時間片就能執行了 cpu時間片不是先分給程序然後再由程序分給程序下的執行緒的。所有...