我最近一直在处理线程,只是想就某事提出建议。我将函数代码放在这里只是为了解决任何歧义。
private void sort() throws FileNotFoundException, InterruptedException{
int i;
int largest = data.get(0) ;
int n = fullsize;//data.getsize
int [ ] tmp = new int [ n ] ;
for ( i = 1; i < n ; i++)
if ( largest < data.get(i) )
largest = data .get(i) ;
int [ ] count = new int [ largest+1] ;
for ( i = 0 ; i <= largest; i++)
count [ i ] = 0 ;
for ( i = 0 ; i < n ; i++)
count [ data .get(i) ]++;
for ( i =0+ 1 ; i <= largest; i++)
{
count [ i ] =count[i]+count[i-1];
output= output.concat(Integer.toString(count[i]));
}
System.out.print("Thread "+Thread.currentThread().getId()+":"+ output+"\n");
/* for(int b=0; i<count.length;b++)
System.out.print(count[b]);*/
for (i=n-1; i >= 0; i--)
{
tmp [count[data.get(i)] -1] = data.get(i);
count[data.get(i)]--;
}
for ( i =0 ; i < n ; i++)
{
data.add(i, tmp[i]);
}
}
这个函数基本上只是以相当复杂的方式对链表进行排序,不过我必须使用这个函数。这就是我想做多线程的功能。但是现在我的问题是,如果每个线程或多或少地完成相同数量的工作,您将如何做到这一点?我有点想将数组拆分为多个部分,然后将每个部分发送到按线程排序?但我不确定这是否是这样做的。朝着正确方向的任何一点都会很棒。