KYTQA 2022-08-19 20:58 采纳率: 100%
浏览 38
已结题

输出出来不是我想要的结果

为什么我的数字输出出来不是我想要的结果

public static void main(String[] args) {
num num = new num();
System.out.println(num.i);
Thread t1 = new Thread(new odd(num));
Thread t2 = new Thread(new even(num));
t1.setName("奇数");
t2.setName("偶数");
t1.start();
t2.start();
}
}

class num {
int i = 0;
}

class odd implements Runnable {
num num;
public odd(num num) {
this.num = num;
}

@Override
public void run() {
    while (true) {
        synchronized (num) {
            if (num.i%  2 == 0) {
                try {
                    num.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            } else {
                System.out.println(Thread.currentThread().getName() + "=" + num.i);
                num.i+=1;
                num.notifyAll();
            }
        }
    }
}

}

class even implements Runnable {
num num;

public even(num num) {
    this.num = num;
}

@Override
public void run() {
    while (true) {
        synchronized (num) {
            if (num.i % 2 != 0) {
                try {
                    num.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            } else {
                System.out.println(Thread.currentThread().getName() + "=" + num.i);
                num.i+=1;
                num.notifyAll();
            }
        }
    }
}
运行结果

=171823
偶数=171824
奇数=171825

我想要达到这样的结果

奇数=1
偶数=2这样的

  • 写回答

2条回答 默认 最新

  • 林晓风 2022-08-19 21:14
    关注

    System.out.println(Thread.currentThread().getName() + "=" + num.i);
    这行代码修改一下,打印的值不对,改为:System.out.println(Thread.currentThread().getName() + "=" + (num.i % 2));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月28日
  • 已采纳回答 8月20日
  • 创建了问题 8月19日

悬赏问题

  • ¥33 找熟练码农写段Pyhthon程序
  • ¥100 怎么让数据库字段自动更新
  • ¥15 antv g6 力导向图布局
  • ¥15 quartz框架,No record found for selection of Trigger with key
  • ¥15 锅炉建模+优化算法,遗传算法优化锅炉燃烧模型,ls-svm会搞,后面的智能算法不会
  • ¥20 MATLAB多目标优化问题求解
  • ¥15 windows2003服务器按你VPN教程设置后,本地win10如何连接?
  • ¥15 求一阶微分方程的幂级数
  • ¥15 关于#线性回归#的问题:【统计】回归系数要转化为相关系数才能进行Fisher' Z转化吗(相关搜索:回归模型)
  • ¥100 使用matlab解决含分段变量的优化问题