atomic常用類方法

Java中的java.util.concurrent.atomic包提供了多種原子操作工具類,以下是核心類及其方法:


?1. AtomicBoolean?

?方法?:

  • get():獲取當前值
  • set(boolean newValue):強制設置值
  • compareAndSet(boolean expect, boolean update):CAS操作
  • getAndSet(boolean newValue):原子獲取舊值并設置新值
  • lazySet(boolean newValue):最終一致性設置(不保證立即可見)

?2. AtomicInteger/AtomicLong?

?方法?:

  • get()/intValue():獲取當前值
  • set(int newValue):強制設置值
  • compareAndSet(int expect, int update):CAS操作
  • getAndIncrement():原子自增(返回舊值)
  • getAndDecrement():原子自減
  • getAndAdd(int delta):原子加法
  • incrementAndGet():自增并返回新值
  • updateAndGet(IntUnaryOperator updateFunction):函數式更新

?3. AtomicReference<V>?

?方法?:

  • get():獲取引用值
  • set(V newValue):強制設置引用
  • compareAndSet(V expect, V update):CAS操作
  • getAndSet(V newValue):原子交換引用
  • updateAndGet(UnaryOperator<V> updateFunction):函數式更新引用

?4. AtomicIntegerArray/AtomicLongArray?

?方法?:

  • length():數組長度
  • get(int i):獲取下標i的值
  • set(int i, int newValue):設置指定下標值
  • compareAndSet(int i, int expect, int update):CAS操作指定元素
  • getAndIncrement(int i):原子自增數組元素

?5. AtomicStampedReference<V>?

?方法?:

  • getReference():獲取引用值
  • getStamp():獲取版本戳
  • compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp):帶版本戳的CAS

?6. AtomicMarkableReference<V>?

?方法?:

  • isMarked():獲取標記狀態
  • compareAndSet(V expectedReference, V newReference, boolean expectedMark, boolean newMark):帶標記位的CAS

?7. LongAdder/DoubleAdder(高并發統計場景)?

?方法?:

  • add(long x):累加值
  • sum():返回總和(非原子)
  • reset():重置計數器

?特點總結?:

  1. ?線程安全?:所有操作均為原子性
  2. ?無鎖設計?:基于CAS實現高性能并發
  3. ?內存語義?:遵循volatile的可見性和有序性
  4. ?函數式支持?:JDK8+提供updateAndGet等函數式方法

適用于計數器、狀態標志、對象引用更新等場景。

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

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

相關文章

算法題打卡力扣第3題:無重復字符的最長子串(mid)

文章目錄題目描述解法一&#xff1a;暴力解解法二&#xff1a;滑動窗口題目描述 解法一&#xff1a;暴力解 遍歷每一個可能的子串&#xff0c;然后逐一判斷每個子串中是否有重復字符。 具體步驟&#xff1a; 使用兩層嵌套循環來生成所有子串的起止位置&#xff1a; 外層循環 i…

HTML5 簡介和基礎骨架

一、HTML5 簡介HTML5 是 HTML&#xff08;超文本標記語言&#xff09;的第五個主要版本&#xff0c;于 2014 年 10 月由 W3C&#xff08;萬維網聯盟&#xff09;正式發布。它不僅是對 HTML4.01 和 XHTML 的升級&#xff0c;更是一套完整的 Web 技術標準&#xff0c;包含了新的標…

.NET技術深度解析:現代企業級開發指南

每日激勵&#xff1a; “不要一直責怪過去的自己&#xff0c;他曾經站在霧里也很迷茫” &#x1f31f; Hello&#xff0c;我是蔣星熠Jaxonic&#xff01; &#x1f308; 在浩瀚無垠的技術宇宙中&#xff0c;我是一名執著的星際旅人&#xff0c;用代碼繪制探索的軌跡。 &#x1…

蘋果手機文本轉音頻,自行制作背誦素材

當你在學習一段專業內容或者背誦重要知識點時&#xff0c;是不是有時會覺得眼睛看久了疲憊&#xff0c;而且記憶效果也不太理想呢&#xff1f;利用手頭的蘋果手機或iPad&#xff0c;你可以輕松將文本內容生成音頻文件&#xff0c;然后隨時隨地反復聽&#xff0c;這對于備考人士…

電子電子技術知識------MOSFET管

電子電子技術知識------MOSFET管前言一、結構與符號二、工作原理1.小功率MOSFET&#xff08;橫向導電&#xff09;2.電力MOS管三、基本特性總結前言 MOSFET是電力場效應晶體管的英文簡寫&#xff0c;又稱功率mos管&#xff0c;mos管 一、結構與符號 二、工作原理 1.小功率M…

仿真波導中超短脈沖傳輸中的各種非線性效應所產生的超連續譜

在波導中&#xff0c;超短脈沖傳輸時會受到各種非線性效應的影響&#xff0c;從而產生超連續譜。這些非線性效應包括自相位調制&#xff08;SPM&#xff09;、交叉相位調制&#xff08;XPM&#xff09;、四波混頻&#xff08;FWM&#xff09;等。基于MATLAB的仿真程序&#xff…

docker-compose的使用

目錄 1-查看容器 2-查看docker鏡像 3-運行兩個容器 4-進入idea 編寫docker-compose文件中的內容 5-編寫配置文件 6-運行 7-docker-compose中的一些命令 啟動服務 關閉服務 查看正在運行的容器 查看日志 重構新的服務 指令docker-compose 文件名 停止已運行的服務 啟動 重啟 1-查…

搭建分布式Hadoop集群[2025] 實戰筆記

文章目錄 一、實戰目標 二、集群規劃 1. 集群拓撲結構 2. 角色分配 說明: 三、環境準備 1. 修改 SSH 端口(安全加固) 操作步驟(所有節點執行): 2. FinalShell 連接配置 3. 防火墻配置 啟動并配置 firewalld: 關閉并禁用防火墻(生產環境建議精細配置,測試環境可關閉):…

【自記錄】Ubuntu20.04下Python自編譯

因為需要新的Python版本&#xff0c;但是我們不希望修改系統原生的Python版本避免某些系統應用無法啟動&#xff0c;因此自建一個干凈的路徑引入Python。 1.編譯 以下在aarch64下測試&#xff0c;x64下可能有差異 必須把相關的devel包安裝完畢&#xff0c;否則python可能缺功能…

Linux - 進程切換

&#x1f381;個人主頁&#xff1a;工藤新一 &#x1f50d;系列專欄&#xff1a;C面向對象&#xff08;類和對象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;終會照亮我前方的路 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 文章目錄進…

機器算法(五)模型選擇與調優

一 交叉驗證1 保留交叉驗證HoldOutholdOut Cross-validation(Train-Test Split)在這種交叉驗證技術中&#xff0c;整個技術集被隨機劃分為訓練集和驗證集。根據經驗法則&#xff0c;整個數據集的近70%被用作訓練集&#xff0c;其余30%被用作驗證集&#xff0c;也就是最常使用的…

Ubuntu 服務器實戰:Docker 部署 Nextcloud+ZeroTier,打造可遠程訪問的個人云

本次部署基于 Ubuntu 系統&#xff08;桌面版 / Server 版通用&#xff0c;核心操作一致&#xff09;&#xff0c;硬件配置參考如下&#xff0c;低配置主機可順暢運行&#xff1a; ubuntu服務器配置如下 硬件類型具體型號/參數CPUIntel Core i3-6100T內存條8GB&#xff08;DD…

移動硬盤刪除東西后,沒有釋放空間

請按照以下步驟&#xff0c;從最簡單、最常見的原因開始排查和解決&#xff1a;主要原因和解決方案1. 檢查操作系統回收站 (最常見原因&#xff01;)這是最容易被忽略的一點。當您直接在外接移動硬盤上刪除文件時&#xff0c;文件并不會直接消失&#xff0c;而是被移到了該移動…

spring boot驢友結伴游網站的設計與實現(代碼+數據庫+LW)

摘要 本文介紹了基于Spring Boot框架開發的驢友結伴游網站的設計與實現。該網站旨在為旅行愛好者提供一個便捷的平臺&#xff0c;使他們能夠輕松地尋找伙伴、預定酒店、參與活動以及分享旅行經歷。系統主要分為兩大模塊&#xff1a;用戶模塊和管理員模塊。用戶可以通過注冊賬號…

人機之間的強交互與弱交互

人機交互不是簡單的人機&#xff0c;其本質是人機環境系統的交互。在這個系統中&#xff0c;人和機器不是孤立的存在&#xff0c;而是在特定環境下相互影響、相互作用的一部分。人機之間的強交互與弱交互可以從以下幾個方面來理解&#xff1a;1、人機強交互通常是指人與機器之間…

OpenCV 基礎知識總結

學習網站 https://zhuanlan.zhihu.com/p/483604320 命名空間 using namespace cv; Mat 作用 創建圖像&#xff08;矩陣&#xff09; 格式 Mat image; //創建一個空圖像image&#xff0c;大小為0 Mat image(100,100,CV_8U); //指定矩陣大小&#xff08;矩陣行數/列數&#xff09…

C#基礎(⑦user32.dll)

我們來詳細學習如何使用 user32.dll&#xff0c;它是 Windows 系統中負責用戶界面交互的核心 DLL&#xff0c;包含窗口管理、消息處理、鍵盤鼠標輸入等功能。下面從基礎到進階&#xff0c;一步一步教你調用其中的常用函數。在 C# 中調用 user32.dll 需要使用 DllImport 特性&am…

Markdown格式.md文件的編輯預覽使用

推薦工具Visual Studio Code (VS Code) - 強烈推薦特點&#xff1a;微軟出品&#xff0c;免費、開源、跨平臺&#xff08;Windows, macOS, Linux&#xff09;。擁有海量插件市場。編輯體驗&#xff1a;安裝 Markdown All in One 等插件后&#xff0c;可以獲得語法高亮、實時預覽…

TypeScript:unknown 類型

作為前端開發工程師&#xff0c;在 TypeScript 中使用 unknown 類型是提升類型安全的關鍵實踐。下面我會結合實際開發場景詳細講解其特性和價值。unknown 核心特性1.類型安全的頂級類型與 any 類似&#xff0c;可接受任何類型的賦值&#xff1a;let userInput: unknown; userIn…

2025 批量下載hasmart所有知乎回答,文章和想法,導出txt,html和pdf

之前分享過文章2025 一鍵批量下載備份知乎回答/文章/想法/專欄/視頻/收藏夾&#xff0c;導出txt&#xff0c;html和 pdf &#xff0c;今天繼續下載hasmart這個號的所有知乎回答 下載的知乎回答目錄&#xff0c;包含發布時間和標題&#xff0c;點擊可跳轉對應回答。 2019年發布…