JAVA并發-volatile底層原理

volatile相當于是一個輕量級的synchronized,一般作用在變量上,它具有三個特性:可見性、有序性,相比于synchronized,他的執行成本更低。

先來說可見性,java存在共享變量不可見性的原因就是,線程不可以直接操作主內存,他需要虛擬一個本地內存,正是因為這樣,這兩個內存就容易因為多線程的原因出現主內存和本地內存不一致的現象,而volatile就是解決了這點,具體就是通過一個Lock指令,這個指令使得當你在訪問變量的時候需要判斷你的內存地址是否有效,如果有效則更改并且會通知其他處理器緩存使得他們對于這個共享變量的內存地址都失效,如果發先內存地址實效,則需要重新從本地內存讀取,從而實現了可見性。

有序性是有效避免了編譯器和處理器對指令的重排序,它在編譯器生成字節碼時插入內存屏障(CPU指令)來禁止指令重排序從而解決。

volatile只能保證在讀取和寫入的操作是最新的但是對于i++這種復合操作就無法確保原子性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72741.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72741.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java面試第十一山!《SpringCloud框架》

大家好,我是陳一。如果文章對你有幫助,請留下一個寶貴的三連哦~ 萬分感謝! 目錄 一、Spring Cloud 是什么? 二、Spring Cloud 核心組件? 1. 服務發現 - Eureka? 2. ?負載均衡 - Ribbon? 3. 斷路器 - Hystrix? ??4. …

Transaction rolled back because it has been marked as rollback-only問題解決

transaction rolled back because it has been marked as rollback-only 簡略總結> 發生場景:try-catch多業務場景 發生原因:業務嵌套,事務管理混亂,外層業務與內層業務拋出異常節點與回滾節點不一致。 解決方式:修…

sql server數據遷移,springboot搭建開發環境遇到的問題及解決方案

最近搭建springboot項目開發環境,數據庫連的是sql server,遇到許多問題在此記錄一下。 1、sql server安裝教程 參考:https://www.bilibili.com/opus/944736210624970769 2、sql server導出、導入數據庫 參考:https://blog.csd…

【數學建模】灰色關聯分析模型詳解與應用

灰色關聯分析模型詳解與應用 文章目錄 灰色關聯分析模型詳解與應用引言灰色系統理論簡介灰色關聯分析基本原理灰色關聯分析計算步驟1. 確定分析序列2. 數據無量綱化處理3. 計算關聯系數4. 計算關聯度 灰色關聯分析應用實例實例:某企業生產效率影響因素分析 灰色關聯…

Spring配置文件-Bean實例化三種方式

無參構造方法實例化 工廠靜態方法實例化 工廠實例方法實例化

SSL 和 TLS 認證

SSL(Secure Sockets Layer,安全套接層)認證是一種用于加密網絡通信和驗證服務器身份的安全技術。它是TLS(Transport Layer Security,傳輸層安全協議)的前身,雖然現在大多數應用使用的是TLS&…

SpringBoot學習(三)SpringBoot整合JSP以及Themeleaf

目錄 Spring Boot 整合 JSP1. 配置依賴2. 創建WEB目錄結構,配置JSP解析路徑3. 創建Controller類4. 修改application.yml5. 添加jstl標簽庫的依賴6. JSP頁面7. 創建啟動類 Spring Boot 整合 Thymeleaf1. 添加Thymeleaf依賴2. Controller3. 修改application.yml配置&a…

普通鼠標的500連擊的工具來了!!!

今天介紹的這款軟件叫:鼠標錄制器,是一款大小只有54K的鼠標連點器,軟件是綠色單文件版。搶票,拍牌,搖號都能用上。文末有分享鏈接 在使用先我們先設置快捷鍵,這樣我們在錄制和停止錄制的時候會更方便。 軟件…

【MySQL】基本查詢(表的增刪查改+聚合函數)

目錄 一、Create1.1 單行數據 全列插入1.2 多行數據 指定列插入1.3 插入否則更新1.4 替換 二、Retrieve2.1 SELECT 列2.1.1 全列查詢2.1.2 指定列查詢2.1.3 查詢字段為表達式2.1.4 為查詢結果指定別名2.1.5 結果去重 2.2 WHERE 條件2.2.1 比較運算符2.2.2 邏輯運算符2.2.3 案…

JAVA中關于圖形化界面的學習(GUI)動作監聽,鼠標監聽,鍵盤監聽

動作監聽: 先創建一個圖形化界面,接著創建一個按鈕對象,設置按鈕的大小。 添加一個addActionListener(); addActionListener() 方法定義在 java.awt.event.ActionListener 接口相關的上下文中,許多支持用戶交互產生…

MySQL 基礎學習文檔

一、MySQL 概述 1.1 核心概念 數據庫 (DB):存儲數據的結構化倉庫數據庫管理系統 (DBMS):操作數據庫的軟件(如 MySQL、Oracle)SQL:操作關系型數據庫的標準語言 1.2 安裝與配置 下載地址:MySQL Installer…

火山引擎(豆包大模型)(抖音平臺)之火山方舟的Prompt的使用測試

前言 在大模型的使用過程當中,Prompt的使用非常的關鍵。原來,我對Prompt的理解不深,覺得Prompt的產生并不是很有必要。但是,自從使用了火山方舟中的“Prompt優解”之后,感受加深了,覺得Prompt是我們和大模型…

SpringBoot入門-(2) Spring IOC機制【附實例代碼】

SpringBoot入門-(2) Spring IOC機制 Spring Spring是一個當前主流的輕量級的框架,發展到形狀已經不僅僅是一個框架,而是形成以Spring為基礎的生態圈,如(Spring Boot,Spring Cloud,Spring Security等) Spring 兩大核心技術 控制反轉(IoC)面…

備賽藍橋杯之第十六屆模擬賽3期職業院校組

提示:本篇文章僅僅是作者自己目前在備賽藍橋杯中,自己學習與刷題的學習筆記,寫的不好,歡迎大家批評與建議 由于個別題目代碼量與題目量偏大,請大家自己去藍橋杯官網【連接高校和企業 - 藍橋云課】去尋找原題&#xff0…

【AI大模型】提示詞(Prompt)工程完全指南:從理論到產業級實踐

【AI大模型】提示詞(Prompt)工程完全指南:從理論到產業級實踐 一、Prompt 提示詞介紹:AI的“密碼本” 1. Prompt的底層定義與價值 本質:Prompt是人與AI模型的“協議語言”,通過文本指令激活模型的特定推理…

Excel 小黑第12套

對應大貓13 涉及金額修改 -數字組 -修改會計專用 VLOOKUP函數使用(查找目標,查找范圍(F4 絕對引用),返回值的所在列數,精確查找或模糊查找)雙擊填充柄就會顯示所有值 這個逗號要中文的不能英…

基于Spring Boot的冷鏈物流系統的設計與實現的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導,歡迎高校老師/同行前輩交流合作?。 技術范圍:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:…

python環境集成整理

接口測試過程中,可能會切換測試環境,通過配置相關信息修改 設計思路: 1、 準備各個環境配置文件信息,包括http、common 、redis、db 2、創建不同環境配置信息 測試環境:env_test.yml、 預生產環境:env_prepro.yml、生產…

動平衡仿真程序設計

以下是針對動平衡振動信號分析的模塊擴展方案&#xff0c;基于原有信號發生器架構進行增強&#xff1a; 一、動平衡專用信號生成器 // UnbalanceVibrationGenerator.h #pragma once #include "SignalGenerator.h" #include <vector>class UnbalanceVibration…

牛客周賽85 題解 Java ABCDEFG

A小紫的均勢博弈 判斷輸入的 n 是奇數還是偶數 import java.io.*; import java.math.*; import java.util.*;public class Main {static IoScanner sc new IoScanner();static final int mod(int) (1e97);static void solve() throws IOException {int nsc.nextInt();if(n%2…