本帖最后由 我是隔壁老王呀 于 2015-6-24 08:52 编辑
你确定是你的线程出问题吗?你带上线程名称仔细看看。
线程安全没有问题,这里出现重复输出的现象,是一种巧合
- if (x == 0) {
- p.name = "张三";
- p.sex = "男";
- } else {
- p.name = "lili";
- p.sex = "nv";
- }
- p.flag = true;
- p.notifyAll();
- x = (x + 1) % 2;
复制代码
如果在线程2中,x==0,此时输出“张三,男”,当执行完p.notifyAll();还未执行后面的奇偶变换时候,此时线程2切换到线程3,此时x还是0,此时就会输出线程3的“张三,男”,这样就会出现重复的现象,但是他们属于不同的线程,所以没有线程安全问题。 |