AtomicInteger真的支持并发操作吗?

JDK1.5中新增类AtomicInteger,支持免锁方式(原子方式)的更新Int的类,声明是线程安全的。我写了一个简单测试类,两个线程同时更新一个AtomicInteger,运行结果却和期望不一致,是否是程序写的有问题,还是AtomicInteger有问题?
[code="java"]import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;

public class TestVolatile
{
public static void main(String[] args)
{
for (int i = 0; i < 10; i++)
{
ExecutorService exe = Executors.newCachedThreadPool();
exe.execute(new VAddThead());
exe.execute(new VAddThead());
exe.shutdown();

        while (!exe.isTerminated())
            ;
        System.out.println(Bean.getInstance().getI());
    }

}

}

class VAddThead implements Runnable
{
@Override
public void run()
{
for (int i = 0; i < 100; i++)
{
Bean.getInstance().addI();
}
}
}

class Bean
{
private static Bean b = null;

private volatile AtomicInteger i = new AtomicInteger(0);

private Bean()
{
}

public static Bean getInstance()
{
    return b == null ? b = new Bean() : b;
}

public void addI()
{
    i.getAndIncrement();
}

public int getI()
{
    return i.get();
}

}[/code]

期望运行结果:
[code="java"]200
400
600
800
1000
1200
1400
1600
1800
2000
[/code]
实际多次运行的结果都不一样,是何原因?本机的环境是JDK1.6.0_13,在windows和linux下测试都不正确。

[quote] public static Bean getInstance()

{

return b == null ? b = new Bean() : b;

} [/quote]

这个方法缺少同步
[code="java"]
public synchronized static Bean getInstance()

{

return b == null ? b = new Bean() : b;

}
[/code]

不是并发 是原子 即+/-数是原子的