我正在尝试按特定顺序打印线程。所以我有一个启动10个线程的main方法。我需要按以下顺序打印:
主线程已启动
线程0开始了 线程1开始了 。 。 线程9开始
线程0完成 线程1完成 。 。 。 线程9完成
主线程已完成
我尝试过使用join()方法,其中主线程在每个线程启动和完成后加入。
这只能解决问题的一半。我还需要打印每个线程的开始,然后完成每个新线程。
任何建议。
答案 0 :(得分:2)
你不需要任何同步结构(这是一个要求吗?我认为应该让它更有趣)。你可以这样做:
public class ThreadOrder {
public static class WaitingForMyTurn extends Thread {
private static volatile Integer currentNumber = 1;
private Integer myNumber;
public WaitingForMyTurn(Integer number) {
this.myNumber = number;
}
public void run() {
while (currentNumber < myNumber) {
}
System.out.println(myNumber);
currentNumber = myNumber + 1;
}
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new WaitingForMyTurn(i).start();
}
}
}
编辑:使currentNumber不稳定