我需要将一个数组分成5个部分(最后一个可能不是一个相等的部分),然后输入线程进行并行处理。 尝试如下:
int skip=arr.length/5;
for(int i=0;i<arr.length;i+=skip){
int[] ssub;
if(i+skip>=arr.length){
sub=new int[arr.length-1]
}
else
{
sub=new int[skip+1];
}
System.arraycopy(arr,0,sub,0,sub.length);
Thread t=new Runnable(barrier,sub){
};
t.start();
}
欢迎任何使其更具功能性并避免使用本地阵列的建议。
答案 0 :(得分:1)
在组织良好的线程方面做得很好。您应该查看ExecutorService,简单youtube video on ExecutorService
在组织数组方面,您可以将它们非本地拆分,也可以为该项目创建一个队列,Java Queue implementations, which one?
这些线程可能以不同的速度工作,因此建议使用Queue,请查看它们。