我最近开始使用 Java 中的多线程
我有一个问题要解决一个问题,我只有 5 个线程,范围从T1, T2,...T5。
任务是按以下顺序打印从 1 到 10 的数字。
T1 -> 1
T2 -> 2
T3 -> 3
T4 -> 4
T5 -> 5
T1 -> 6
T2 -> 7
T3 -> 8
T4 -> 9
T5 -> 10
我尝试用这段代码解决它。
public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
Thread[] tArray = new Thread[] { new Thread(counter, "T1"), new Thread(counter, "T2"),
new Thread(counter, "T3"), new Thread(counter, "T4"), new Thread(counter, "T5") };
for (int i = 0; i < 10; i++) {
if (i < 5) {
tArray[i].start();
tArray[i].join();
} else {
tArray[i - 5] = new Thread(counter, "T" + ((i - 5) + 1)); //Instantiating new Thread which is not allowed.
tArray[i - 5].start();
tArray[i - 5].join();
}
}
}
public class Counter implements Runnable {
private int count = 0;
@Override
public synchronized void run() {
System.out.println(Thread.currentThread().getName() + " -> " + ++count);
}
}
但由于只允许 5 个线程,因此不接受我的解决方案,因为我也在循环块中进行实例new Thread化。elsefor
任何帮助将不胜感激。