请问为什么会出现这样的执行结果?两个线程同时执行,同时拿到了count = 8我能理解,但如果两个线程都执行了count++,为什么结果不是10?难道是 count = count + 1,两者都拿到了 8,+1之后两者又都更新为9,这整个执行过程中有什么细节吗?这个静态变量在多线程中有什么说法?
public class Test02 implements Runnable {
private static int count;
public Test02() {
count = 0;
}
public void run() {
synchronized (this) {
for (int i = 0; i < 5; i++) {
try {
System.out.println(Thread.currentThread().getName() + ":" + (count++));
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public int getCount() {
return count;
}
public static void main(String[] args) {
Thread thread1 = new Thread(new Test02(), "SyncThread1");
Thread thread2 = new Thread(new Test02(), "SyncThread2");
thread1.start();
thread2.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(test02.getCount());
}
}