成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java并發(fā)編程學(xué)習(xí)之cas-AtomicStampedReference(三)

DevTalking / 2895人閱讀

摘要:作用通過版本號解決的問題。示例當(dāng)前值,預(yù)設(shè)當(dāng)前版本號結(jié)果當(dāng)前值,預(yù)設(shè)當(dāng)前版本號結(jié)果當(dāng)前值當(dāng)前版本號運(yùn)行結(jié)果如下這里用休眠,讓線程和線程一次執(zhí)行,通過結(jié)果可以看出來,線程執(zhí)行成功,而線程執(zhí)行失敗。

作用

通過版本號解決ABA的問題。

示例
public class AtomicStampedReferenceDemo {
    static AtomicStampedReference stampedReference = new AtomicStampedReference<>(1, 1);

    public static void main(String[] args) throws InterruptedException {
        int oldStamp = stampedReference.getStamp();
        Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                boolean result = stampedReference.compareAndSet(1, 2, oldStamp, oldStamp + 1);
                System.out.println("當(dāng)前值:1,預(yù)設(shè)2,當(dāng)前版本號:" + stampedReference.getStamp() + ",結(jié)果:" + result);
            }
        });
        Thread thread2 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                boolean result = stampedReference.compareAndSet(2, 3, oldStamp, oldStamp + 1);
                System.out.println("當(dāng)前值:2,預(yù)設(shè)3,當(dāng)前版本號:" + stampedReference.getStamp() + ",結(jié)果:" + result);
            }
        });
        thread1.start();
        thread2.start();
        Thread.sleep(2000);
        System.out.println("當(dāng)前值:" + stampedReference.getReference() + ",當(dāng)前版本號:" + stampedReference.getStamp());
    }
}

運(yùn)行結(jié)果如下:

這里用休眠,讓線程1和線程2一次執(zhí)行,通過結(jié)果可以看出來,線程1執(zhí)行成功,而線程2執(zhí)行失敗。原因就是因為版本號對不上。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77904.html

相關(guān)文章

  • java并發(fā)編程學(xué)習(xí)之cas-AtomicStampedReference()

    摘要:作用通過版本號解決的問題。示例當(dāng)前值,預(yù)設(shè)當(dāng)前版本號結(jié)果當(dāng)前值,預(yù)設(shè)當(dāng)前版本號結(jié)果當(dāng)前值當(dāng)前版本號運(yùn)行結(jié)果如下這里用休眠,讓線程和線程一次執(zhí)行,通過結(jié)果可以看出來,線程執(zhí)行成功,而線程執(zhí)行失敗。 作用 通過版本號解決ABA的問題。 示例 public class AtomicStampedReferenceDemo { static AtomicStampedReference...

    xiaoxiaozi 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之線程池-ThreadPoolExecutor()

    摘要:是所有線程池實現(xiàn)的父類,我們先看看構(gòu)造函數(shù)構(gòu)造參數(shù)線程核心數(shù)最大線程數(shù)線程空閑后,存活的時間,只有線程數(shù)大于的時候生效存活時間的單位任務(wù)的阻塞隊列創(chuàng)建線程的工程,給線程起名字當(dāng)線程池滿了,選擇新加入的任務(wù)應(yīng)該使用什么策略,比如拋異常丟棄當(dāng)前 ThreadPoolExecutor ThreadPoolExecutor是所有線程池實現(xiàn)的父類,我們先看看構(gòu)造函數(shù) 構(gòu)造參數(shù) corePool...

    阿羅 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之線程的生命周期-yield(

    摘要:方法作用讓當(dāng)前的線程狀態(tài)從運(yùn)行狀態(tài)轉(zhuǎn)到就緒狀態(tài),然后和其他就緒狀態(tài)的同相同優(yōu)先級的其他線程競爭的執(zhí)行權(quán)。也就是說,這個線程,還是有機(jī)會繼續(xù)再次執(zhí)行的。 方法作用 讓當(dāng)前的線程狀態(tài)從運(yùn)行狀態(tài)轉(zhuǎn)到就緒狀態(tài),然后和其他就緒狀態(tài)的同相同優(yōu)先級的其他線程競爭CPU的執(zhí)行權(quán)。也就是說,這個線程,還是有機(jī)會繼續(xù)再次執(zhí)行的。 優(yōu)先權(quán) 優(yōu)先級范圍是1~10,數(shù)字越大,優(yōu)先級越高,默認(rèn)為5,但是由于操作系...

    Barry_Ng 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之種線程啟動方式

    摘要:類這是方式啟動的運(yùn)行結(jié)果如下接口這是方式啟動的運(yùn)行結(jié)果如下接口運(yùn)行結(jié)果如下接口和接口的區(qū)別可以有返回值。通過包裝成,傳遞給,因為是實現(xiàn)了接口。 類Thread public class ThreadDemo extends Thread { public static void main(String[] args) { ThreadDemo thread = ...

    enrecul101 評論0 收藏0
  • java并發(fā)編程學(xué)習(xí)之FutureTask

    摘要:在并發(fā)編程學(xué)習(xí)之三種線程啟動方式中有提過。是否執(zhí)行結(jié)束,包括正常執(zhí)行結(jié)束或異常結(jié)束。獲取返回值,沒有得到返回值前一直阻塞。運(yùn)行結(jié)果如下由于任務(wù)被取消,所以拋出異常。注意的是,此時線程還在跑,和返回的是。并不能讓任務(wù)真正的結(jié)束。 FutureTask 在java并發(fā)編程學(xué)習(xí)之三種線程啟動方式中有提過。主要的方法如下: cancel(boolean mayInterruptIfRunni...

    BothEyes1993 評論0 收藏0

發(fā)表評論

0條評論

DevTalking

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<