병렬 처리는 사용 가능한 프로세서만큼 많은 하위 문제를 나누어서 수행 할 수 있습니다. 리스트 반복자를 들어, 하위 목록을 반복 할 수 있습니다
int nThreads = Runtime.getRuntime().availableProcessors() + 1;
ExecutorService exec = Executors.newFixedThreadPool(nThreads);
int interval = list.size()/parallel.nThreads;
int from = 0;
for(int i = 0; i < nThreads; ++i) {
int to = (i == nThreads - 1) ? 1000 : from + interval;
exec.submit(new Search(from, to, list));
from = to;
}
exec.shutdown();
exec.awaitTermination(1, TimeUnit.DAYS);
클래스 Search
는 (파일 생성) 작업을 수행하는 데 사용됩니다.
예 Search
클래스의 :
class Search implements Runnable {
final int from;
final int to;
final List< Map< String, String >> list;
Search(int from, int to, List< Map< String, String >> list) {
this.from = from;
this.to = to;
this.list = list;
}
@Override
public void run(){
for(int b = from; b < to; ++b) {
Map< String, String > map = list.get(b);
...
}
}
}
이것은 가능하지만 25 개 파일을 처리하는 데 4 시간이 걸리면 많은 양의 사전 처리가 진행되며 (멀티 스레딩의 이점을 얻을 수 있음) 그렇지 않으면 엄청난 파일입니다. –
가능 가능. 그러나 문제의 묘사는 그런 것을 진술하지 않습니다. 그가 설명하는 것을 기반으로하면 자신의 앱은 목록을 반복하면서 키로 파일을 만들고 파일 콘텐츠로 값을 출력합니다. – vptheron
그것은 25 라크 (250 만) 파일이 아닙니다. –