Я пытался напечатать четные и нечетные числа двумя повторяющимися повторами, используя wait и notify. Тем не менее, я прошел через все реализации, приведенные на веб-сайте. Хотя в качестве первого разработчика многопоточности я пытался сделать это сам, но я не смог получить желаемый результат. Здесь я вставляю свой код ниже: Не могли бы вы просмотреть и вернуться с исправлениями и объяснениями, где я допустил ошибку.Печать Даже нечетное число с использованием двух потоков
package com.test.printEvenOdd;
public class PrintOddEvenNumbers {
public static void main(String[] args){
String s = new String("");
EvenThread t1= new EvenThread(s);
OddThread t2= new OddThread(s);
Thread th1 = new Thread(t1);
Thread th2 = new Thread(t2);
th1.start();
th2.start();
}
}
class EvenThread implements Runnable{
String s;
EvenThread(String s){
this.s= s;
}
@Override
public void run() {
synchronized(s){
for(int i=1;i<=10;i++){
if(i%2==0){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(i);
s.notify();
}
try {
s.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
class OddThread implements Runnable{
String s;
OddThread(String s){
this.s= s;
}
@Override
public void run() {
synchronized(s){
for(int i=1;i<=10;i++){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(i%2==1){
System.out.println(i);
s.notify();
}
try {
s.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
Какой выход вы ожидаете? Какой результат вы получаете? Почему вы не следуете рекомендуемым шаблонам (например, ждать в цикле while, который проверяет состояние и т. Д.)? – assylias
http://stackoverflow.com/questions/6017281/odd-even-number-printing-using-thread –
Вам нужно добавить желаемый результат и фактический результат. –