我有一个列表,它应该根据线程数打印多线程的值。
public class Launcher {
public static void main(String[] args) {
List<String> tests = Arrays.asList("A", "B", "C", "D");
final int thread_count = 2;
for (int i = 0; i < thread_count; i++)
new Demo(tests.get(i));
}}
public class Demo implements Runnable {
Thread t;
String tests;
Demo(String tests) {
t = new Thread(this);
this.tests = tests;
t.start();
}
@Override
public void run() {
System.out.println("Started "+tests);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Stop");
}}
它实际打印
开始A
开始B
停止
停止
但我希望它打印
开始A
开始B
停止
停止
开始C
开始D
停止
停止
答案 0 :(得分:0)
您无法启动C
和D
,因为您设置了final int thread_count = 2;
并且您的循环在到达i < thread_count
后停止了。因此,如果你想在一个2步循环中得到所有的startet,而不是用另一个循环来增强它,如:
for(int s = 0; s < 3; s+2){
for (int i = 0; i < thread_count; i++)
new Demo(tests.get(i+s));}
}