2014-09-07 3 views
5

많은 파일을 읽고 구문 분석하려고합니다. 구문 분석 할 파일이 10000 개 이상이므로 스레드를 사용하여이 프로세스를 빠르게 만들고 싶습니다.자바 멀티 스레딩을 사용하여 여러 파일을 읽을 수 있습니까?

예를 들어 5 개의 스레드가있는 경우 모두 특정 수의 파일을 동시에 읽게하여 읽기 및 구문 분석 프로세스가 더 빨라지도록하고 싶습니다. 이것이 가능한가? 이것을 스레드로 분할하여 어떤 중요한 속도 향상을 얻을 수 있습니까? 그렇다면 어떻게해야합니까?

P. 나는 외부 라이브러리를 사용하는 것에 반대하지 않는다.

내가 JDK 1.6

+0

"모든 스레드가 하나의 파일을 동시에 읽습니다. 그래서 각 스레드가 2 개의 파일을 구문 분석합니다."이것은 무엇을 의미합니까? 두 개의 스레드가 같은 파일을 읽거나 한 개의 스레드가 두 개의 파일을 읽으려고합니까? –

+0

@ Code-Apprentice 설명 업데이트되었습니다. 10 개의 파일과 5 개의 스레드가 있음을 의미합니다. 이제 각 스레드가 1 개의 별도 파일을 동시에 구문 분석하려고합니다. 명확한 희망이 있습니다. – Mimanshu

+1

스레드 수를 과용하지 마십시오. 하드 디스크는 멀티 스레드가 아닙니다. – EJP

답변

0

함께 일하고 병렬로 하나 개의 파일을 읽기위한 How to read all lines of a file in parallel in Java 8를 참조하십시오.

귀하의 경우, 할당 된 파일에 대한 "전체 파일 읽기"요청이있는 프로세스만큼 많은 스레드로 스레드 풀을 시작하고 OS가 파일을 순서대로 읽으십시오.

1

읽을 파일이 많은 경우 더 나은 방법은 각 파일을 하나 이상의 스레드가 읽지 않도록하는 것입니다. 대부분의 경우 다중 스레드로 많은 작업을 처리하는 가장 좋은 방법은 스레드 풀을 사용하는 ExecutorService를 사용하는 것입니다. 읽을 파일마다 서비스에 작업을 제출하십시오. 스레드 풀을 I/O 시스템이 바쁜 상태 (병목 현상이 될 가능성이 있음)로 유지할만큼 충분히 커지게 만들고 성능을 최대화합니다.

관련 문제