Ich habe es das Interview:Java Multithreading - Wie Zahlen zu drucken, in der natürlichen Ordnung
Thread-A Prints Even numbers from 0
Thread-B prints Odd numbers from 1
I 0 1 2 3 4 .... in natürlicher Reihenfolge bis 1000 drucken möchten Wie kann ich achive.
habe ich versucht, auf diese Weise:
public class ThreadDemo2 {
static int aa = 0;
public static void main(String[] args) {
boolean mytime = true;
EvenThread et = new EvenThread(mytime);
OddThread ot = new OddThread(mytime);
et.start();
ot.start();
}
}
class EvenThread extends Thread {
boolean mytime;
int i = 0;
public EvenThread(boolean mytime) {
this.mytime = mytime;
}
public void run() {
//if (ThreadDemo2.aa == 0) {
for (int i = 0; i < 1000 && ThreadDemo2.aa == 0; i += 2) {
System.out.println(i);
ThreadDemo2.aa = 1;
try {
sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// }
}/* else
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
}
class OddThread extends Thread {
boolean mytime;
int i = 1;
public OddThread(boolean mytime) {
this.mytime = mytime;
}
public void run() {
//if (ThreadDemo2.aa == 1) {
for (int i = 1; i < 1000 && ThreadDemo2.aa == 1; i += 2) {
System.out.println(i);
ThreadDemo2.aa = 0;
try {
sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//ThreadDemo2.aa = 0;
//}
}
}
Erwarten Sie nicht, dass andere Ihren Code kopieren, kompilieren und ausführen. Es ist einfacher, wenn Sie uns sagen, was passiert. Außerdem fehlt Ihrem Code, soweit ich das sagen kann, das Wesentliche, das hier benötigt wird: Sie müssen die beiden Threads ineinandergreifen, im Grunde müssen sie im Lockstep laufen, um die Zahlen in der richtigen Reihenfolge auszudrucken. Das ist wie der ** harte ** Teil der Aufgabe. Also, wollen Sie, dass wir das schwere Heben für Sie erledigen? – GhostCat
@ Jägermeister, das ist das Gegenteil von dem, was wir normalerweise Leuten sagen. Sie möchten, dass das OP "Ihnen sagt, was passiert", aber das OP versteht nicht, was passiert. Deshalb fragt er. Es gibt keine bessere Beschreibung dessen, was Code tatsächlich tut, als der Code selbst. Versuche einfach, die Kommentare zu SO zu zählen, die sagen: "Alter! Zeig uns deinen Code!" OTOH, manchmal posten sie zu viel Code und wir bitten sie, es zu vereinfachen: (siehe http://sscce.org/) –
Weitere Informationen finden Sie unter http://stackoverflow.com/a/36183057/437506. –