老师,能帮我看一下这个代码哪里出问题了吗

来源:7-7 交替打印

JLU_LONG

2019-12-19

public class SingelDoublechange {
private static final Object object=new Object();
private static int num = 0;
public static void main(String[] args) throws InterruptedException {

    Thread thread1=new Thread(new Single(num,object));
    Thread thread2=new Thread(new Double(num,object));
    thread2.start();

// Thread.sleep(10);
thread1.start();

}

}
class Single implements Runnable{
private int num;
Object object;
public Single(int num,Object object){
this.num=num;
this.object=object;
}
@Override
public void run() {

    while(num<100) {
        synchronized (object) {
          if (num % 2 != 0) {
            System.out.println(num + "是奇数");
            num++;
          }
        }
    }
}

}
class Double implements Runnable{
private int num;
Object object;
public Double(int num,Object object){
this.num=num;
this.object=object;
}
@Override
public void run() {

    while (num<100) {
        synchronized (object){
        if (num % 2 == 0) {
            System.out.println(num + "是偶数");
            num++;
        }
    }
    }
}

}

结果就是只输出一个0 然后卡住了

写回答

1回答

悟空

2019-12-19

为了提高小伙伴的debug能力,小伙伴可以先尝试debug并且配合课程提供的源码,两边一对比就可以很快发现区别,找出问题。

如果你经过对比,还是不能发现问题或者无法解决,请再次留言,我非常愿意帮你一起排查问题。

0
6
JLU_LONG
回复
悟空
感谢老师 麻烦老师哈
2019-12-19
共6条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程