Java的int类型是线程安全的?
看很多地方讲到多线程访问同一个数据,如果不进行同步会导致错误结果,但我写了一个测试却始终运行正常,请高手看看是怎么回事:
public class Main { public static void main(String[] args) { for (int i = 0; i < 10; i++) { Runnable addit = new AddOne(); new Thread(addit).start(); } }}public class AddOne implements Runnable { static int cnt = 0; @Override public void run() { System.out.println(Thread.currentThread().getName() + ",before:" + cnt); cnt++; System.out.println(Thread.currentThread().getName() + ",after:" + cnt); }}
Thread-0,before:0Thread-0,after:1Thread-2,before:1Thread-2,after:2Thread-4,before:2Thread-4,after:3Thread-6,before:3Thread-6,after:4Thread-8,before:4Thread-8,after:5Thread-5,before:2Thread-3,before:2Thread-3,after:6Thread-5,after:7Thread-7,before:7Thread-7,after:8Thread-9,before:8Thread-9,after:9Thread-1,before:2Thread-1,after:10