国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java volatile案例講解

java volatile案例講解

2021-09-23 13:08我的心里只有你 Java教程

這篇文章主要介紹了java volatile案例講解,本文通過講解內存可見性,Volatile變量來去詳細分析該項概念,需要的朋友可以參考下

本篇來自java并發編程實戰關于volatile的總結。

要說volatile,先得明白內存可見性。那我們就從內存可見性說起。

一、內存可見性

可見性是一種復雜的屬性,因為可見性中的錯誤總是會違背我們的直覺。在單線程環境中,如果向某個變量先寫入值,然后在沒有其他寫入操作的情況下讀取這個變量,那么總能得到相同的值。這看起來很自然。然而,當讀操作和寫操作在不同的線程中執行時,情況卻并非如此,這聽起來或許有些難以接受。通常,我們無法確保執行讀操作的線程能適時地看到其他線程寫入的值,有時甚至是根本不可能的事情。為了確保多個想成之間對內存寫入操作的可見性,必須使用同步機制。 對于以下代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class NoVisibility {
    private static boolean ready;
    private static int number;
    
    private static class ReaderThread extends Thread{
        public void run(){
            while(!ready)
                Thread.yield();
            System.out.println(number);
        }
    }
    
    public static void main(String[] args){
        new ReaderThread().start();
        number = 42;
        ready = true;
    }
}

NoVisibility可能會持續循環下去,因為讀線程可能永遠都看不到ready的值。一種更奇怪的現象是,Novisibility可能會輸出0,因為讀線程可能看到了寫入ready的值,但卻沒有看到之后寫入number的值,這種現象被稱為“重排序(Reordering)“。只要在某個線程中無法檢測到重排序情況,(即使在其他線程中可以很明顯地看到該線程中的重排序),那么就無法確保線程中的操作將按照程序中指定的順序來執行。當主線程首先寫入number,然后在沒有同步的情況下寫入ready,那么讀線程看到的順序可能與寫入的順序完全相反。

在沒有同步的情況下,編譯器、處理器以及運行時等都可能對操作的執行順序進行一些意想不到的調整。在缺乏足夠同步的多線程程序中,要相對內存操作的執行順序進行判斷,幾乎無法得出正確的結論。

這看上去似乎是一種失敗的設計,但卻能使JVM充分地利用現代多核處理器的強大性能。例如,在缺少同步的情況下,java內存模型允許編譯器對操作順序進行重排序,并將數值緩存在寄存器中。此外,它還允許CPU對操作順序進行重排序,并將數值環迅在處理器特定的緩存中。

二、Volatile變量

java語言提供了一種稍弱的同步機制,即volatile變量,用來確保將變量的更新操作通知到其他線程。當把變量聲明為volatile類型后,編譯器與運行時都會注意到這個變量是共享的,因此不會將該變量上的操作和其他內存操作一起重排序。volatile變量不會被緩存在寄存器或者對其他處理器不可見的地方,因此在讀取volatile類型的變量時總會返回最新寫入的值。

volatile與加鎖機制的區別:

加鎖機制既可以確保可見性又可以確保原子性,而volatile變量只能確保可見性。

 當且僅當滿足以下所有條件時,才應該使用volatile變量:

  1. 對變量的寫入操作不依賴變量的當前值,或者你能確保只有單個線程更新變量的值。
  2. 該變量不會與其他狀態變量一起納入不變性條件中。
  3. 在訪問變量時不需要加鎖。

到此這篇關于java volatile案例講解的文章就介紹到這了,更多相關Java volatile內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/y444400/article/details/50414344

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 在线观看av网站永久 | 福利视频网址导航 | 激情综合色综合久久综合 | 亚洲va中文字幕 | 午夜羞羞视频 | 综合久久网 | 国产精品成人3p一区二区三区 | av看片 | 午夜精品一区二区三区免费视频 | 精品福利一区二区三区免费视频 | 中文字幕av第一页 | 神马影院一区二区三区 | 国产欧美日韩在线 | 热99精品| 午夜国产在线 | 99精品久久久久久久免费 | 国产精品一区二区av | 亚洲精品专区 | 色狠狠久久av五月综合 | 亚洲青草 | 五月天婷婷综合 | 亚洲第一se情网站 | 久久丁香 | 日韩av一区二区在线观看 | 自拍一区视频 | 欧美日韩免费 | 久久精品视频网站 | 成人爽a毛片一区二区免费 日韩av高清在线 | 人妖天堂狠狠ts人妖天堂狠狠 | 亚洲福利 | 欧美日韩欧美日韩 | 在线视频中文字幕 | 亚洲成人久久久 | 成人a视频片观看免费 | 91婷婷射| 欧美成人一级 | 日韩免费在线 | 老妇女av | av在线中文| 欧美日本国产一区 | 成人午夜毛片 |