首先你这个程序安全性有问题,两个线程同时访问同一个变量,是肯定会出现错误信息的,两个100就是体现.
至于为什么后面不会出现两次99 . 是因为 最开始两个线程开启后第一次执行for循环的时候,在两个线程都还没有执行最后x--操作的时候,都先执行了打印语句,所以就会出现两个100, 这以后每个线程都必定会顺序执行-1操作,所以不会再出现重复, 有点不好讲这意思
当你把x-- 放到输出语句的时候 也是会出现相同100的情况 你可以多试验几次 我已经试验过了.
你放下来 其实也一样 打印语句执行完后, 再执行-1操作, 所以
System.out.println(Thread.currentThread().getName()+" "+x--); 这句其实是两个步骤.
|