gpt4 book ai didi

java - 使用JAVA并行流时是否可以按线程传递资源?

转载 作者:行者123 更新时间:2023-12-02 01:41:58 25 4
gpt4 key购买 nike

我的问题真的很简单,但我没有找到明确回答它的主题...(也许我错过了...:o)。我想知道,当使用并行流时,是否可以为每个线程提供自定义数据(每个线程不同)。

例如,我们可以想象我想知道哪个线程处理哪个实体。

例如:我有以下集合 [0,1,2,3,4,5]我创建并行流并使用 map 方法将正方形与每个元素关联。我应该有以下输出:[0,1,4,9,16,25]但我想确定哪个线程处理哪些实体,例如,如果我有 2 个线程:

线程 1 -> [0,1,2]

线程 2 -> [3,4,5]

我希望我说得清楚了,提前感谢那些花时间回答我的问题的人!

最佳答案

使用Thread.currentThread(),您可以从当前 Activity 的上下文中获取线程。

查看这个小片段:

final int[] ints = IntStream.range(0, 6)
.parallel()
.map(i -> {
System.out.println("thread " + Thread.currentThread().getName() + " maps " + i + " to " + i * i);
return i * i;
})
.toArray();

System.out.println("Final array " + Arrays.toString(ints));

打印如下内容:

thread main maps 5 to 25
thread ForkJoinPool.commonPool-worker-1 maps 2 to 4
thread ForkJoinPool.commonPool-worker-2 maps 3 to 9
thread ForkJoinPool.commonPool-worker-3 maps 0 to 0
thread main maps 1 to 1
thread ForkJoinPool.commonPool-worker-4 maps 4 to 16
Final array [0, 1, 4, 9, 16, 25]

虽然这不是确定性的,例如每次迭代可能会导致不同的打印结果

关于java - 使用JAVA并行流时是否可以按线程传递资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54347762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com