多线程Java:如何使用线程和用户输入显示奇数和偶数
我开始使用两个线程,一个用于奇数,另一个用于偶数,但运行结果是“请输入x”的两倍。 我的问题是,如何只显示一次“请输入x”并且仍然使用两个线程
@Override
public void run() {
System.out.println("Please input x:");
x= input.nextInt();
System.out.println("Please input y:");
y=input.nextInt();
while (x< y) {
synchronized (lock) {
while (x % 2 != remainder) { // wait for numbers other than remainder
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() + " " + x);
x++;
lock.notifyAll();
}
}
}
# 1 楼答案
这是你需要做的事情的概貌
首先,修改
TaskEvenOdd
,以便可以将x
和y
值传递给其构造函数,并将它们存储在实例变量中:在main中,提示输入
x
和y
值,并将它们作为参数传递给OddEvenTask
构造函数: