摘要:示例運行結(jié)果如下在多線程無鎖的情況下,總是小于等于,而因為原子性的方法總是等于。
示例
public class AtomicDemo { static int num1 = 0; static AtomicInteger num2 = new AtomicInteger(0); static class Thread1 extends Thread { @Override public void run() { try { sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } num1++; } } static class Thread2 extends Thread { @Override public void run() { try { sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } num2.incrementAndGet(); } } public static void main(String[] args) throws InterruptedException { for (int i = 0; i < 1000; i++) { new Thread1().start(); new Thread2().start(); } Thread.sleep(2000); System.out.println("num1=" + num1); System.out.println("num2=" + num2.get()); } }
運行結(jié)果如下:
在多線程無鎖的情況下,num1總是小于等于1000,而num2因為原子性的方法總是等于1000。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75350.html
摘要:抽象類,實現(xiàn)了的接口。將任務(wù)封裝成提交任務(wù)主要方法在任務(wù)是否超時超時時間任務(wù)書用于存放結(jié)果的,先完成的放前面。 AbstractExecutorService抽象類,實現(xiàn)了ExecutorService的接口。 newTaskFor 將任務(wù)封裝成FutureTask protected RunnableFuture newTaskFor(Runnable runnable, T va...
摘要:示例計算一組數(shù)據(jù),設(shè)置閾值為,也就是說每次計算的數(shù)量不超過個。總數(shù)總數(shù)運行結(jié)果如下可以看出,兩次結(jié)果是一樣的。創(chuàng)建繼承的類,實現(xiàn)方法,這里主要是計算以及拆分任務(wù)合并結(jié)果。 示例 計算一組數(shù)據(jù),設(shè)置閾值為50,也就是說每次計算的數(shù)量不超過50個。 public class RecursiveTaskDemo extends RecursiveTask { private stat...
摘要:與執(zhí)行方法,是用來啟動線程的,此時線程處于就緒狀態(tài),獲得調(diào)度后運行方法。執(zhí)行方法,相對于普通方法調(diào)用,在主線程調(diào)用。程序是順序執(zhí)行的,執(zhí)行完才會執(zhí)行下面的程序。 start與run 執(zhí)行start方法,是用來啟動線程的,此時線程處于就緒狀態(tài),獲得調(diào)度后運行run方法。run方法執(zhí)行結(jié)束,線程就結(jié)束。 執(zhí)行run方法,相對于普通方法調(diào)用,在主線程調(diào)用。程序是順序執(zhí)行的,執(zhí)行完才會執(zhí)行下...
摘要:線程安全問題在并發(fā)編程學習之基礎(chǔ)概念提到,多線程的劣勢之一,有個線程安全問題,現(xiàn)在看看下面的例子。那么,該怎么解決呢,很簡單,在方法前加個同步鎖。運行結(jié)果如下有兩種情況,是因為看誰先搶占鎖,但是輸出的算法結(jié)果是正確的。 線程安全問題 在java并發(fā)編程學習之基礎(chǔ)概念提到,多線程的劣勢之一,有個線程安全問題,現(xiàn)在看看下面的例子。 public class NotSafeDemo { ...
摘要:的應(yīng)用方式代碼塊作用范圍在中,作用對象是調(diào)用這個代碼塊的對象。方法進來了出來了運行的結(jié)果如下等把方法執(zhí)行完,釋放了的鎖,才開始執(zhí)行。靜態(tài)方法運行的結(jié)果如下等待執(zhí)行完才執(zhí)行,說明是類鎖類所的另外一種形式運行結(jié)果如下 synchronized的應(yīng)用方式 代碼塊:作用范圍在{}中,作用對象是調(diào)用這個代碼塊的對象。 方法:作用范圍是一個方法,作用對象是調(diào)用這個方法的對象。 靜態(tài)方法:作用范圍...
閱讀 2990·2021-11-16 11:51
閱讀 2619·2021-09-22 15:02
閱讀 3736·2021-08-04 10:21
閱讀 3625·2019-08-30 15:43
閱讀 1959·2019-08-30 11:04
閱讀 3610·2019-08-29 17:14
閱讀 500·2019-08-29 12:16
閱讀 2943·2019-08-28 18:31