Tho*_*mas 4 java multithreading
对于大规模并行计算,我倾向于使用执行程序和可调用程序.当我有数千个要计算的对象时,我觉得为每个对象实例化数千个Runnables并不是那么好.
所以我有两种方法来解决这个问题:
我.将工作负载分成少量x工作者,每个工作者都给出y对象.(将对象列表拆分为每个y/x-size的x分区)
public static <V> List<List<V>> partitions(List<V> list, int chunks) {
final ArrayList<List<V>> lists = new ArrayList<List<V>>();
final int size = Math.max(1, list.size() / chunks + 1);
final int listSize = list.size();
for (int i = 0; i <= chunks; i++) {
final List<V> vs = list.subList(Math.min(listSize, i * size), Math.min(listSize, i * size + size));
if(vs.size() == 0) break;
lists.add(vs);
}
return lists;
}
Run Code Online (Sandbox Code Playgroud)
二.创建从队列中获取对象的x-worker.
问题:
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |