在线程之间分配不均数

马格纳罗克

我只是在学习Java中的线程,并且想按字母顺序对单词列表进行排序。我的程序读取txt文件中的单词,然后将它们放在字符串数组中。用户可以选择自己想使用多少个线程。我想将数组分成偶数个(尽可能)的块,线程可以自己对它们进行排序。

所以对我的问题:

我如何在所有线程之间尽可能地拆分array.length?我的脑袋一片空白,我想不出一种聪明的方法来做到这一点。

例如:如果我的array.length为22和4个线程,在这种情况下如何给线程;6、6、5和5个大小的阵列?需要适用于给定的每个数字。

我尽力解释了一下,请询问是否不清楚!谢谢!

彼得·劳瑞

它不需要尽可能均匀。如果一个线程有6个,这将确定所花费的时间长度,在这种情况下,多达6个线程无关紧要。

你可以做

int chunkSize = (tasks + threads - 1) / threads; // divide by threads rounded up.
for (int t = 0; t < threads; t++) {
    int start = t * chunksSize;
    int end = Math.min(start + chunkSize, tasks);
    executor.submit(() -> {
         // inside the thread
         for (int i = start; i < end; i++) {
             process(i);
    });
}

注意:如果使用Stream.of(array).parallel(),则实际上每个线程创建两个任务。这样可以缓解某些批次即使元素数量相同也可能需要更长的时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在线程之间传递对象

来自分类Dev

在线程之间移动向量

来自分类Dev

在线程之间共享mvar

来自分类Dev

在线程之间共享容器阵列

来自分类Dev

在线程之间共享变量的方法

来自分类Dev

C ++-在线程之间传递数据

来自分类Dev

在线程之间传输函数调用

来自分类Dev

在线程之间发送盒装特征

来自分类Dev

pthreads在线程之间共享内存

来自分类Dev

在线程之间传递对象

来自分类Dev

在线程之间传递NSManagedObjectContext

来自分类Dev

多线程问题-在线程之间传递对象

来自分类Dev

flask会话变量是否在线程之间保持状态?

来自分类Dev

如何在线程之间发送变量/信息

来自分类Dev

使用Android Realm在线程之间进行读写

来自分类Dev

HINSTANCE在线程之间有效吗?

来自分类Dev

C ++在线程之间共享状态的最佳方法

来自分类Dev

如何在线程之间共享对AtomicBool的访问?

来自分类Dev

通过eventfd在线程之间传输数据

来自分类Dev

在线程之间共享对象的最佳方法?

来自分类Dev

不确定如何在线程之间传递对象

来自分类Dev

在线程之间传递可变数据

来自分类Dev

如何在线程之间共享非发送对象?

来自分类Dev

在线程之间共享字典中的数据

来自分类Dev

如何在线程之间共享巨大的进程

来自分类Dev

在线程之间划分工作?(pthread)

来自分类Dev

如何在线程之间传递数据?

来自分类Dev

在线程之间转发/传递文件描述符

来自分类Dev

在线程之间共享资源(文件,互斥体)