日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java static 可见性_Java多线程 synchronized与可见性的关系以及可见性问题总结

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java static 可见性_Java多线程 synchronized与可见性的关系以及可见性问题总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:七里香的編程之路

出自:OSCHINA

原文:my.oschina.net/u/4098550/blog/4548274


能保證可見性的措施

除了volatile 可以讓變量保證可見性外.happens-before九大規則. 都是能夠保證可見性的. 其中就包含了鎖操作(synchronized 和 lock) 和 volatile 修飾的變量

synchronized作用的升華

  • synchronized 關鍵字不僅僅保證了其代碼塊中的原子性 ,也保證了可見性. 例如如下代碼中的i++操作 , 使用了synchronized 代碼塊保護起來, 使得兩個線程對其相加的時候, 可以正確的得出20萬的結果.
    這個結果不僅僅是保證了其i相加時候的原子性. 也說明保證了其可見性. 否則一個線程加完了之后, 另外一個線程沒有獲取i的最新的值的話, 也會導致相加的結果變少.

  • synchronized 不僅僅讓被保護的代碼安全, 還會保證對synchronized 修飾的代碼執行完畢之后, 下一個synchronized 進入之前, 整個synchronized 保護的代碼塊,都會被之后執行的代碼看得到. 并且synchronized 之前的所有的代碼也會被看到 . 如下面這幅圖, 線程B拿到鎖之后, 對于線程A的所有的操作都是可見的. 這是一個連帶效應.

性的代碼進行了修改. 把賦值操作的方法中, 最后一個變量的賦值, 加上了synchronized修飾. 打印的方法中, 第一行代碼加上了synchronized修飾. 這樣就保證了原子性和可見性. 寫線程在執行完成d=6的時候, 會釋放鎖. 打印的線程獲得鎖的時候, 就能知道寫線程的所有的操作, 獲得其最新的值.

package com.thread.jmm;/*** 類名稱:FieldVisibility* 類描述:  演示可見性問題** @author: https://javaweixin6.blog.csdn.net/* 創建時間:2020/9/5 14:31* Version 1.0*/
public class FieldVisibility {int a = 1;int b = 2;int c = 3;int d = 4;//給a 賦值, 并把值給bprivate void change() {a = 3;b = a;c = a;synchronized (this) {d = 6;}}/*** 打印出a b*/private  void print() {synchronized (this) {int aa = a ;}int bb = b ;int cc = c ;int dd = d ;System.out.println("b=" + b + ";a=" + a);}public static void main(String[] args) {while (true) {FieldVisibility test = new FieldVisibility();new Thread(() -> {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}//給 a b 重新賦值test.change();}).start();new Thread(() -> {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}//給 a b 打印出來test.print();}).start();}}
}

總結

以上是生活随笔為你收集整理的java static 可见性_Java多线程 synchronized与可见性的关系以及可见性问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。