Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 带for循环的java多线程_Multithreading - Fatal编程技术网

Multithreading 带for循环的java多线程

Multithreading 带for循环的java多线程,multithreading,Multithreading,有一个学生实体列表 List<Student> student = new Arraylist<Student>(); 通过foreach循环: for(Student std : student){ System.out.println(std.getName()); } 以上是正常的方式。但是如何使用多线程打印它们呢? 三个学生的详细信息一起打印。意味着将三个线程放在一起一个简单的解决方案: studentList.parallelStream().forEa

有一个学生实体列表

List<Student> student = new Arraylist<Student>();
通过foreach循环:

for(Student std : student){
  System.out.println(std.getName());
}
以上是正常的方式。但是如何使用多线程打印它们呢? 三个学生的详细信息一起打印。意味着将三个线程放在一起

一个简单的解决方案:

studentList.parallelStream().forEach(System.out::println);
这会将您的列表转换为一个流,并为该流中的每个元素调用System.out.println()

非流解决方案当然要复杂得多。它需要您定义多个线程,包括这些线程如何在共享列表上工作的“模式”

对于使用“原始线程”执行此操作:即简单、直接的内容:您必须将数据“切片”到存储桶中,然后定义使用不同存储桶的线程。请参见作为起点。

一个简单的解决方案:

studentList.parallelStream().forEach(System.out::println);
这会将您的列表转换为一个流,并为该流中的每个元素调用System.out.println()

非流解决方案当然要复杂得多。它需要您定义多个线程,包括这些线程如何在共享列表上工作的“模式”


对于使用“原始线程”执行此操作:即简单、直接的内容:您必须将数据“切片”到存储桶中,然后定义使用不同存储桶的线程。请参见作为起点。

这没有任何实际用途

for(Student  std:student){
    new Thread(()->{
        System.out.println(std.getName);
        System.out.println(std.getName);
    }).start();
}

这也比上面的答案更糟糕。

这没有任何实际用途

for(Student  std:student){
    new Thread(()->{
        System.out.println(std.getName);
        System.out.println(std.getName);
    }).start();
}

这也比上面的答案更糟糕。

我还是投了你一票。。。就为了最后一句话;-)你还是得到了我的选票。。。就为了最后一句话;-)无关:请阅读java命名约定。类名总是大写的。也要使用有意义的名字,例如调用学生列表,可能是
学生
,而不是
学生
!无关:请阅读java命名约定。类名总是大写的。也要使用有意义的名字,例如调用学生列表,可能是
学生
,而不是
学生
!嗨,我想要非流式解决方案。任何链接都将被删除helpful@Bachas这里真正的问题是:您的需求非常不明确。您希望所有线程打印所有元素,还是希望第一个线程打印前10个元素,第二个线程打印下10个元素?你看,你在这个问题上其实没有下多大功夫。你不应该期望任何比这更需要努力的事情回来……实际上,有一种方法。在该方法的开头有循环开始。循环大小可以是2,23,50任何大小。通常,执行单循环需要12分钟。这意味着更多的循环和更多的时间消耗。我想用至少四个线程一起执行多线程。因此,循环花费的时间更少请参阅我更新的答案。但是:您绝对必须研究多线程在Java中是如何工作的。老实说:你的问题读起来像是“我想建一座摩天大楼,现在有人告诉我如何用铲子挖地下室”。您必须坐下来学习多线程是如何工作的。有人给你一点你不懂的代码是没有意义的!当然,您可以从其他人的解决方案开始,但最终,您将编写代码。你必须了解你需要什么。“Bachas,但是写了,我用你所要求的链接来增强我的答案,所以请考虑在某个时候接受/支持我的输入。嗨,我想要那个非流解决方案。任何链接都将被删除helpful@Bachas这里真正的问题是:您的需求非常不明确。您希望所有线程打印所有元素,还是希望第一个线程打印前10个元素,第二个线程打印下10个元素?你看,你在这个问题上其实没有下多大功夫。你不应该期望任何比这更需要努力的事情回来……实际上,有一种方法。在该方法的开头有循环开始。循环大小可以是2,23,50任何大小。通常,执行单循环需要12分钟。这意味着更多的循环和更多的时间消耗。我想用至少四个线程一起执行多线程。因此,循环花费的时间更少请参阅我更新的答案。但是:您绝对必须研究多线程在Java中是如何工作的。老实说:你的问题读起来像是“我想建一座摩天大楼,现在有人告诉我如何用铲子挖地下室”。您必须坐下来学习多线程是如何工作的。有人给你一点你不懂的代码是没有意义的!当然,您可以从其他人的解决方案开始,但最终,您将编写代码。你必须明白你需要什么。“Bachas,但作为书面,我增强了我的答案与你所要求的链接,所以请考虑接受/赞成我的输入在某个点。