public class TTTT implements Runnable{public static AtomicInteger ato = new AtomicInteger(1);int i = 1;public static void main(String[] args) { TTTT t = new TTTT(); for (int i = 0;i<100; i++){ new Thread(t).start(); }}public void rrrr() throws Exception{ Thread.sleep(100); int preVal = ato.get(); int val = ato.incrementAndGet(); System.out.println(preVal+" ########### "+val);}@Override public void run() { try { rrrr(); } catch (Exception e){ }}}AtomicInteger 的incrementAndGet是線程安全的計數方法上面代碼執行結果是:1 ########### 45 ########### 61 ########### 39 ########### 109 ########### 1113 ########### 1416 ########### 181 ########### 28 ########### 96 ########### 74 ########### 57 ########### 818 ########### 1916 ########### 1714 ########### 1515 ########### 1612 ########### 1311 ########### 1219 ########### 2121 ########### 2222 ########### 2319 ########### 2023 ########### 2424 ########### 25無法保證順序,線程安全體現在哪里呢
2 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
AtomicInteger
是一個原子類,顧名思義,它能保證一些操作是原子性的,比如說++、--
等操作,這些操作在多線程的情況并不是線程安全的,但是使用原子類可以保證這些操作的原子性,從而來保證線程的安全性。
添加回答
舉報
0/150
提交
取消