2015-08-19 2 views
1

У меня есть список, который должен печатать значения по многопоточности на основе количества потоков.Печать Список строк Многопоточность

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"); 

}} 

Это фактически печатает

Стартовал

Started Аргументы B

Стоп

Стоп

Но я хочу, чтобы напечатать

начал

Started Аргументы B

Стоп

Стоп

Started C

Started D

Стоп

Стоп

ответ

0

Вы не можете начать C и D, потому что вы установили final int thread_count = 2;, и ваша петля останавливается после достижения i < thread_count. Поэтому, если вы хотите получить весь старт в двухэтапном цикле, чем улучшить его с помощью следующего цикла:

for(int s = 0; s < 3; s+2){ 
    for (int i = 0; i < thread_count; i++) 
     new Demo(tests.get(i+s));} 
} 
Смежные вопросы