sayıları yazdırmak için nasıl o röportaj var:Java Multithreading - doğal düzenin
Thread-A Prints Even numbers from 0
Thread-B prints Odd numbers from 1
Ben başarmak nasıl 1000 kadar doğal sırayla .... 0 1 2 3 4 yazdırmak istiyorum. Eğer konuları başlattığınızda, o zaman, = ThreadDemo2.aa
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;
//}
}
}
Başkalarının kodunuzu kopyalamasını, derlemesini ve çalıştırmasını beklemeyin. Bize ne olduğunu anlatırsan daha kolay olur. Ayrıca, söyleyebileceğim kadarıyla, kodunuz burada gerekli olan önemli şeyden yoksundur: iki parçacığı birbirine bağlamak zorundasınız, temel olarak numaraları doğru sırayla basmak için kilitlemede çalışması gerekir. Bu atama ** sert ** kısmı gibi. Yani, senin için ağır kaldırmamızı mı istiyorsun? – GhostCat
@ Jägermeister, bu genellikle insanlara söylediğimiz şeyin tam tersidir. OP'nin “ne olduğunu size anlatmasını” istersiniz, ancak OP ne olduğunu anlamaz. Bu yüzden soruyor. Kodun gerçekte kodun kendisinden daha iyi bir açıklaması yoktur. Sadece "Dude! Bize kodunuzu göster!" OTOH, bazı zamanlarda çok fazla kod yazıyorlar ve bunu basitleştirmelerini istiyoruz: (bkz. Http://sscce.org/) –
Lütfen başka bir şey için http://stackoverflow.com/a/36183057/437506 adresine bakın. –