老师您好,我在看完您的视频后自己写了用synchronized关键字实现0~100奇偶数交替打印,但是我得到的最终结果里却有101,和您代码比对之后发现我再while循环的条件里用的是<=,我想不明白的是当Thread-0打印出100,count变为101之后应该不满足循环条件了,为什么101还会被打印出来。以下是我的代码:
/**
* Description: 用synchronized关键字实现两个线程交替打印0~100中的奇偶数
*/
public class WaitNotifyPrintOddEvenSyn {
private static final Object lock = new Object();
private static int count = 1;
//为什么最后打印出了101
public static void main(String[] args) {
new Thread(() -> {
while (count <= 100){
synchronized (lock){
if ((count & 1) == 0){
System.out.println(Thread.currentThread().getName() + ": " + count++);
}
}
}
}).start();
new Thread(() -> {
while (count <= 100){
synchronized (lock){
if ((count & 1) == 1){
System.out.println(Thread.currentThread().getName() + ": " + count++);
}
}
}
}).start();
}