static int a = 0;
Thread thread = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
a++;
}
});
** thread.start();**
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
a--;
}
});
thread1.start();
thread.join();
log.debug("a1===>"+a);
thread1.join();
//打印结果:
a1===>10000
----------------------------------------------------------------------------
Thread thread = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
a++;
}
});
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 10000; i++) {
a--;
}
});
** thread.start();**
thread1.start();
thread.join();
log.debug("a1===>"+a);
thread1.join();
运行两个线程时,为什么thread.start()这段代码放的位置不同,打印的结果有差异呢。
第一个代码快运行时不会有线程安全问题; 第二个却存在线程安全问题