我在循環中執行一些任務。我需要將這個120萬的循環分成多個線程。每個線程在列表中都會有一些結果。當所有線程完成時,我需要將所有線程列表數據添加到一個公共列表中。我無法使用ExecutorService。我怎樣才能做到這一點?如何將巨大的循環分成多個線程,然後將結果添加到集合中?
它應該與jdk 1.6兼容。
這是我在做什麼現在:
List<Thread> threads = new ArrayList<Thread>();
int elements = 1200000;
public void function1() {
int oneTheadElemCount = 10000;
float fnum_threads = (float)elements/(float)oneTheadElemCount ;
String s = String.valueOf(fnum_threads);
int num_threads = Integer.parseInt(s.substring(0, s.indexOf("."))) + 1 ;
for(int count =0 ; count < num_threads ; count++) {
int endIndex = ((oneTheadElemCount * (num_threads - count)) + 1000) ;
int startindex = endIndex - oneTheadElemCount ;
if(count == (num_threads-1))
{
startindex = 0;
}
if(startindex == 0 && endIndex > elements) {
endIndex = elements -1 ;
}
dothis(startindex,endIndex);
}
for(Thread t : threads) {
t.run();
}
}
public List dothis(int startindex, int endIndex) throws Exception {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = startindex;
(i < endIndex && (startindex < elements && elements)) ; i++)
{
//task adding elements in list
}
}
});
thread.start();
threads.add(thread);
return list;
}
看着平行的流? –
閱讀fork/join或Java 8中的Spliterators。 – BarrySW19
它應該與jdk1.6兼容 – user3098231