神奇的AtomicInteger

  • 當(dāng)AtomicInteger的值為最大值2147483647時,執(zhí)行incrementAndGet()會發(fā)生什么晾嘶?
  • 當(dāng)AtomicInteger的值為最小值-2147483648時果覆,執(zhí)行decrementAndGet()會發(fā)生什么摇幻?
        AtomicInteger max = new AtomicInteger(Integer.MAX_VALUE);
        System.out.println(max);
        System.out.println(max.incrementAndGet());
        System.out.println("--------------------");
        AtomicInteger min = new AtomicInteger(Integer.MIN_VALUE);
        System.out.println(min);
        System.out.println(min.decrementAndGet());

測試結(jié)果如下:

2147483647
-2147483648
--------------------
-2147483648
2147483647

有時候并不能符合我們的業(yè)務(wù)場景,比如隊列消息從0開始增加顷锰,當(dāng)增加到最大值時我們不希望下一個值為負(fù)數(shù)柬赐。而是從0開始,周而復(fù)始官紫,對incrementAndGet和decrementAndGet分別做如下改造:

private final AtomicInteger i;
public final int incrementAndGet() {
        int current;
        int next;
        do {
            current = this.i.get();
            next = current >= 2147483647?0:current + 1;
        } while(!this.i.compareAndSet(current, next));

        return next;
    }

    public final int decrementAndGet() {
        int current;
        int next;
        do {
            current = this.i.get();
            next = current <= 0?2147483647:current - 1;
        } while(!this.i.compareAndSet(current, next));

        return next;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肛宋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子束世,更是在濱河造成了極大的恐慌酝陈,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毁涉,死亡現(xiàn)場離奇詭異沉帮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門穆壕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來待牵,“玉大人,你說我怎么就攤上這事喇勋∮Ц茫” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵川背,是天一觀的道長贰拿。 經(jīng)常有香客問我,道長渗常,這世上最難降的妖魔是什么壮不? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮皱碘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隐孽。我一直安慰自己癌椿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布菱阵。 她就那樣靜靜地躺著踢俄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晴及。 梳的紋絲不亂的頭發(fā)上都办,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機(jī)與錄音虑稼,去河邊找鬼琳钉。 笑死,一個胖子當(dāng)著我的面吹牛蛛倦,可吹牛的內(nèi)容都是我干的歌懒。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼溯壶,長吁一口氣:“原來是場噩夢啊……” “哼及皂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起且改,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤验烧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后又跛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碍拆,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了倔监。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片直砂。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浩习,靈堂內(nèi)的尸體忽然破棺而出静暂,到底是詐尸還是另有隱情,我是刑警寧澤谱秽,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布洽蛀,位于F島的核電站,受9級特大地震影響疟赊,放射性物質(zhì)發(fā)生泄漏郊供。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一近哟、第九天 我趴在偏房一處隱蔽的房頂上張望驮审。 院中可真熱鬧,春花似錦吉执、人聲如沸疯淫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熙掺。三九已至,卻和暖如春咕宿,著一層夾襖步出監(jiān)牢的瞬間币绩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工府阀, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留缆镣,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓肌似,卻偏偏與公主長得像费就,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子川队,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)力细,也就是一...
    悟名先生閱讀 4,132評論 0 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)固额,斷路器眠蚂,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 為什么我們懂得了那么多道理,卻仍然過不好這一生斗躏?為什么我們看了那么多書逝慧,卻還是記不住? 因為讀完...
    紅參勿忘閱讀 282評論 4 2
  • 進(jìn)入簡書的第一天笛臣,今后沒事來寫寫東西云稚,交一些朋友,互勉共進(jìn)吧I虮ぁ静陈!
    西撒赤紅閱讀 195評論 0 0
  • 黃昏時送兒子返校,回家后將衛(wèi)生打掃干凈诞丽,給花兒修枝鲸拥,清潔花瓶,然后開始工作僧免。其實我是個對自己經(jīng)常不滿意的人刑赶,事事都...
    湯蓓閱讀 193評論 0 0