打印字符串多线程列表

时间:2015-08-19 14:20:50

标签: java multithreading

我有一个列表,它应该根据线程数打印多线程的值。

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

停止

停止

1 个答案:

答案 0 :(得分:0)

您无法启动CD,因为您设置了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));}
}