線程安全:
創(chuàng)新互聯(lián)網絡公司擁有10余年的成都網站開發(fā)建設經驗,1000+客戶的共同信賴。提供成都做網站、成都網站制作、成都外貿網站建設、網站開發(fā)、網站定制、賣友情鏈接、建網站、網站搭建、自適應網站建設、網頁設計師打造企業(yè)風格,提供周到的售前咨詢和貼心的售后服務當多個線程訪問某個類時,不管運行時環(huán)境采用何種調度方式或者這些進程將如何交替執(zhí)行,并且在主調代碼中不需要任何額外的同步或協(xié)調,這個類都能表現(xiàn)出正確的行為,那么就稱這個類時線程安全的。
線程安全主要體現(xiàn)在以下三個方面:
原子性:提供了互斥訪問,同一時刻只能有一個線程對它進行操作
可見性:一個線程對主內存的修改可以及時的被其他線程觀察到
有序性:一個線程觀察其他線程中的指令執(zhí)行順序,由于指令重排序的存在,該觀察結果一般雜亂無序
引子
在多線程的場景中,我們需要保證數(shù)據安全,就會考慮同步的方案,通常會使用synchronized或者lock來處理,使用了synchronized意味著內核態(tài)的一次切換。這是一個很重的操作。
有沒有一種方式,可以比較便利的實現(xiàn)一些簡單的數(shù)據同步,比如計數(shù)器等等。concurrent包下的atomic提供我們這么一種輕量級的數(shù)據同步的選擇。
使用例子
import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicInteger; public class App { public static void main(String[] args) throws Exception { CountDownLatch countDownLatch = new CountDownLatch(100); AtomicInteger atomicInteger = new AtomicInteger(0); for (int i = 0; i < 100; i++) { new Thread() { @Override public void run() { atomicInteger.getAndIncrement(); countDownLatch.countDown(); } }.start(); } countDownLatch.await(); System.out.println(atomicInteger.get()); } }
網站標題:Java并發(fā)編程包中atomic的實現(xiàn)原理示例詳解-創(chuàng)新互聯(lián)
URL鏈接:http://muchs.cn/article36/iodpg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、全網營銷推廣、域名注冊、微信小程序、搜索引擎優(yōu)化、網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容