<分区>
我最近开始使用 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 个线程,所以我的解决方案没有被接受,因为我还在 for
的 else
block 中实例化了 new Thread
循环。
如有任何帮助,我们将不胜感激。