一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

服務器之家 - 編程語言 - Java教程 - java 并發中的原子性與可視性實例詳解

java 并發中的原子性與可視性實例詳解

2020-11-30 15:05CSDN Java教程

這篇文章主要介紹了java 并發中的原子性與可視性實例詳解的相關資料,原子性是說一個操作是否可分割。可見性是說操作結果其他線程是否可見。需要的朋友可以參考下

java 并發中的原子性與可視性實例詳解

并發其實是一種解耦合的策略,它幫助我們把做什么(目標)和什么時候做(時機)分開。這樣做可以明顯改進應用程序的吞吐量(獲得更多的CPU調度時間)和結構(程序有多個部分在協同工作)。做過java Web開發的人都知道,Java Web中的Servlet程序在Servlet容器的支持下采用單實例多線程的工作模式,Servlet容器為你處理了并發問題。

原子性

原子是世界上的最小單位,具有不可分割性。比如 a=0;(a非long和double類型) 這個操作是不可分割的,那么我們說這個操作時原子操作。再比如:a++; 這個操作實際是a = a + 1;是可分割的,所以他不是一個原子操作。非原子操作都會存在線程安全問題,需要我們使用同步技術(sychronized)來讓它變成一個原子操作。一個操作是原子操作,那么我們稱它具有原子性。Java的concurrent包下提供了一些原子類,我們可以通過閱讀API來了解這些原子類的用法。比如:AtomicInteger、AtomicLong、AtomicReference等。

可見性

可見性,是指線程之間的可見性,一個線程修改的狀態對另一個線程是可見的。也就是一個線程修改的結果。另一個線程馬上就能看到。比如:用volatile修飾的變量,就會具有可見性。volatile修飾的變量不允許線程內部緩存和重排序,即直接修改內存。所以對其他線程是可見的。但是這里需要注意一個問題,volatile只能讓被他修飾內容具有可見性,但不能保證它具有原子性。比如 volatile int a = 0;之后有一個操作 a++;這個變量a具有可見性,但是a++ 依然是一個非原子操作,也就這這個操作同樣存在線程安全問題。

他們之間關系

原子性是說一個操作是否可分割。可見性是說操作結果其他線程是否可見。這么看來他們其實沒有什么關系。

實例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.chu.test.thread;
/**
 * 可見性分析
 * @author Administrator
 *
 *volatile 會拒絕編譯器對其修飾的變量進行優化。也就不會存在重排序的問題。volatile只會影響可見性,不會影響原子性。
 *下面程序如果不加
 */
public class Test {
 
 volatile int a = 1;
 volatile boolean ready;
  
 public class PrintA extends Thread{
  @Override
  public void run() {
   while(!ready){
    Thread.yield();
   }
   System.out.println(a);
  }
 }
 public static void main(String[] args) throws InterruptedException {
  Test t = new Test();
  t.new PrintA().start();
  //下面兩行如果不加volatile的話,執行的先后順序是不可預測的。并且下面兩行都是原子操作,但是這兩行作為一個整體的話就不是一個原子操作。
  t.a = 48; //這是一個原子操作,但是其結果不一定具有可見性。加上volatile后就具備了可見性。
  t.ready = true;//同理
 }
 
}

上面程序如果變量a不用volatile修飾那么輸出結果很可能就是0.。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/u010359884/article/details/46637211

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色琪琪久久草在线视频 | 古装一级无遮挡毛片免费观看 | 免费观看在线永久免费xx视频 | 2022超帅男同gayxxx | 满溢游泳池免费土豪全集下拉版 | 亚洲AV中文字幕无码久久 | 无人区尖叫之夜美女姐姐视频 | 欧美一区二区三 | 亚洲国产成人99精品激情在线 | 国自产精品手机在线视频 | 二次元美女互摸隐私互扒 | 91精品手机国产在线观 | 免费精品视频在线 | 大又大又粗又爽女人毛片 | 偷拍自拍校园春色 | 久久精品国产亚洲AV热无遮挡 | 99精品免费视频 | 日本老妇人乱视频 | xx18-19xxxxhd| 午夜AV内射一区二区三区红桃视 | 欧美日韩国产手机在线观看视频 | 2015小明台湾永久区域免费 | 久久内在线视频精品mp4 | 久久精品热只有精品 | 亚洲国产欧美久久香综合 | 大团圆6全文在线阅读 | 外国xxx | 亚洲精品九色在线网站 | 99国产小视频 | 女人肮脏的交易中文字幕未删减版 | 国产一区二区三区在线观看视频 | 久久夜色噜噜噜亚洲AV0000 | chinese真实incest chinese特色video chinese男性厕所撒尿合集 | 白丝爆动漫羞羞动漫网站 | 午夜福利理论片在线播放 | 女教师被学生糟蹋三天 | 精品国产三级av在线 | 国产亚洲人成网站天堂岛 | 亚欧综合| 国产成人免费a在线资源 | 日产一区二区 |