10W+ 面試題,happens-before 規則
點選上方“業餘草”,選擇“置頂公眾號”
第一時間獲取技術乾貨和業界資訊!
今年的面試情況,被很多人吐槽。可能是人數和難度都有所增加。
昨天還有網友私信我,說面試被問到 happens-before 規則,我該怎麼回答?這個說來話長,給他發了幾個連結,並推薦他看看《2019 Java 高併發學習路線圖和必會的 50 道面試題!》這個。
過來一會他,又來了,說網上的解釋我看不懂。能不能讓我通俗的給他講一下。
關於 happens-before 規則,我有一篇文章(非公眾號)靠自然搜尋已經達到 10w+ 的閱讀了。
所以,就借這個時間給大家通俗的講一下 Happens-Before 吧。
happens-before 是從 JDK5 開始,java 使用新的 JSR -133 記憶體模型推出的一個規則。JSR-133 使用 happens-before 的概念來闡述操作之間的記憶體可見性。在 JMM 中,如果一個操作執行的結果需要對另一個操作可見,那麼這兩個操作之間必須要存在 happens-before 關係。這裡提到的兩個操作既可以是在一個執行緒之內,也可以是在不同執行緒之間。
與程式設計師密切相關的 happens-before 規則如下:
翻譯解釋如下:
程式次序規則:一個執行緒內,按照程式碼順序,書寫在前面的操作 happens-before 於書寫在後面的操作;
鎖定規則:一個 unLock 操作先行發生於後面對同一個鎖額 lock 操作;
volatile變數規則:對一個變數的寫操作先行發生於後面對這個變數的讀操作;
傳遞規則:如果操作A先行發生於操作B,而操作B又先行發生於操作C,則可以得出操作A先行發生於操作C;
執行緒啟動規則:Thread物件的start()方法先行發生於此執行緒的每個一個動作;
執行緒中斷規則:對執行緒interrupt()方法的呼叫先行發生於被中斷執行緒的程式碼檢測到中斷事件的發生;
執行緒終結規則:執行緒中所有的操作都先行發生於執行緒的終止檢測,我們可以通過Thread.join()方法結束、Thread.isAlive()的返回值手段檢測到執行緒已經終止執行;
物件終結規則:一個物件的初始化完成先行發生於他的finalize()方法的開始;
需要注意的是,兩個操作之間具有 happens-before 關係,並不意味著前一個操作必須要在後一個操作之前執行!happens-before 僅僅要求前一個操作(執行的結果)對後一個操作可見,且前一個操作按順序排在第二個操作之前(the first is visible to and ordered before the second)。happens- before 的定義很微妙,它可以看作 java 記憶體模型中的一條規則。
如果還有疑問,請加我微訊號:xmtxtt,備註“進群”,進群共同討論學習吧!
10T技術資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智慧,GO等等。在公眾號內回覆對應關鍵字或框架名字,即可免費獲取!!
你再主動一點點 我們就有故事了
相關文章
- Happens-Before原則到底規定了什麼APP
- JAVA記憶體模型和Happens-Before規則Java記憶體模型APP
- Java記憶體模型以及happens-before規則Java記憶體模型APP
- 25個有關Drools規則引擎的面試題面試題
- 根據happens-before法則藉助同步APP
- JMM 最最最核心的概念:Happens-before 原則APP
- 阿里負責人揭祕面試潛規則阿里面試
- 面試中會遇到的正則題面試
- 對線面試官:Mysql組合索引的生效規則面試MySql索引
- 【java規則引擎】之規則引擎解釋Java
- Laravel 自定義驗證規則的問題Laravel
- 正則匹配規則2
- IT職場規則
- url規則
- canvas非零繞組規則與奇偶規則Canvas
- 解決問題的三條規則 | Yonatan Zunger
- apache的rewrite規則無法載入問題Apache
- SSIS 資料庫排序規則衝突問題資料庫排序
- 管理規則和基於規則的轉換——流
- 任務規則
- git提交規則Git
- ESlint規則EsLint
- css規則整理CSS
- CSS命名規則CSS
- 1、基本規則
- firewalld:direct規則
- 【java規則引擎】規則引擎RuleBase中利用觀察者模式Java模式
- 【java規則引擎】java規則引擎搭建開發環境Java開發環境
- 邦芒面試:面試時這些問題不能提,否則會被降分面試
- 【java規則引擎】簡單規則的rete網路示意圖Java
- nginx location匹配規則Nginx
- Laravel 自定義規則Laravel
- htmlhint 規則詳解HTML
- CSS規則物件概述CSS物件
- SCSS 巢狀規則CSS巢狀
- Nginx 跳轉規則Nginx
- iptables防火牆規則防火牆
- SQLServer CDC清理規則SQLServer