java开启三个线程遍历集合代码
时间: 2023-10-22 19:49:50 浏览: 48
下面是一个示例代码,演示如何在Java中创建并启动三个线程来遍历一个集合:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
numbers.add(5);
int numThreads = 3;
int chunkSize = numbers.size() / numThreads;
for (int i = 0; i < numThreads; i++) {
int start = i * chunkSize;
int end = (i == numThreads - 1) ? numbers.size() : (i + 1) * chunkSize;
List<Integer> subList = numbers.subList(start, end);
Thread thread = new Thread(() -> {
for (Integer number : subList) {
System.out.println("Thread " + Thread.currentThread().getId() + ": " + number);
}
});
thread.start();
}
}
}
```
这段代码首先创建了一个包含数字的列表 `numbers`,然后定义了要启动的线程数量 `numThreads`,并计算出每个线程应该处理的元素数量 `chunkSize`。
接下来,通过一个循环来创建并启动每个线程。在循环中,我们根据当前线程的索引计算出要处理的子列表的起始和结束位置,并使用 `subList` 方法获取对应的子列表。
然后,我们创建一个新的线程,并使用Lambda表达式定义线程的执行代码。在这个示例中,线程实际上只是简单地遍历子列表,并打印每个元素。
最后,我们调用 `start` 方法启动线程,使其开始执行。每个线程将独立地遍历其分配的子列表,并在控制台上打印结果。
请注意,由于多线程执行的无序性,打印输出的顺序可能不会按照列表中元素的顺序显示。