java - 打印字符串列表 多线程

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

}}

它实际上打印了

开始了

开始B

停止

停止

但我希望它打印

开始了

开始B

停止

停止

开始C

开始D

停止

停止

最佳答案

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

关于java - 打印字符串列表 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32098164/

相关文章:

java - 在 Netbeans 中运行/调试 Maven JavaSE 应用程序

java - 如何更改音频文件的播放速率?

Java Collection<Generic Type> 没有集合的排序

java - Spring Boot : java. sql.SQLException:用户访问被拒绝

c++ - 线程——Mac 与 Linux

java - 为我的 MSSQL 配置加载 bean 对象时出现 AbstractMethodError

c# - 事件日志编写器线程安全吗

Java在线程完成之前执行下一个任务

c# - C#使用Async在单独的线程中运行函数,同时继续执行主类

multithreading - 尝试多线程程序。 C++/CLI