1. 程式人生 > >關於Java的Atomic包用法求助

關於Java的Atomic包用法求助

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包用法求助