關於Java的Atomic包用法求助
阿新 • • 發佈:2018-03-08
cep rac 並發 exception final run @override head ger
最近在學高並發的一些知識,在學到Atomic時,運行程序,與預期不一樣
代碼如下
public class Learn13 { AtomicInteger count = new AtomicInteger(0); void m() { for(int i= 0; i< 10000; i++) count.getAndIncrement(); } public static void main(String[] args) { final Learn12 learn = new Learn12(); Runnable r= new Runnable() { @Override public void run() { learn.m(); } }; List<Thread> threads = new ArrayList<Thread>(); for(int i= 0; i< 10; i++) { threads.add(new Thread(r, "thead" + i)); }for(Thread thread : threads) { thread.start(); } for(Thread thread : threads) { try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(learn.count); } }
示例將這樣可以得到100000的結果,但我沒得到,每次不一樣,方法不是原子性操作,不知哪裏有問題,希望有看到的能幫忙解答下
關於Java的Atomic包用法求助