나는 하나의 파일을 읽는 3 개의 스레드를 원한다. 예를 들어 파일의 크기는 900kb이다. 첫 번째 스레드는 파일을 1kb로 읽고 다른 스레드는 같은 방식으로 파일을 읽는다. 쓰레드는 301kb에서 600kb까지 읽고 쓰레드는 601kb에서 900kb까지 읽는다.)이 접근법은 더 빠른 출력을 읽는 것을 콘솔에 보여 주어야한다. 출력은 나에게 중요하지 않다. 주요 문제는 읽는 방법이다. 누군가 PLZ3 개의 스레드를 사용하여 단일 파일 읽기
답변
public static void main(String[] args){
//
String filePath = args[0];
//Create runnable objects
//Load the file
BufferedReader br = new BufferedReader(new FileReader(filePath));
//share this object among threads you want
MyFileReader mf1 = new MyFileReader(br);
MyFileReader mf2 = new MyFileReader(br);
MyFileReader mf3 = new MyFileReader(br);
new Thread(mf1).start();
new Thread(mf2).start();
new Thread(mf3).start();
//code to detect thread ends
//close br here
}
public class MyFileReader implements Runnable{
private BufferedReader br=null;
public MyFileReader(BufferedReader br){
this.br = br
}
public void run(){
String line=null;
while((line=br.readLine())!=null){
//do your thing here e.g.
System.out.println(line);
}
}
이것은 재앙을위한 처방이다. 개별 라인을 제대로 확보 할 수는 없습니다. – Grodriguez
이있는 경우 단일 스레드로 빠르게로 비교 PLZ PLZ 내가 자바 전문가는 아니지만 당신의 목표는 성능이 경우, 당신은 읽기 귀찮게하지해야한다고 생각합니다 나에게 제안 또는 코딩을 제공 여러 스레드에서 단일 메가 바이트 파일. 대부분의 시간은 실제 IO 작업 (디스크에서 읽기)에 소요되는 시간입니다 (디스크 작업은 메모리 작업보다 수백 배 느립니다). 물론 때로는 더 빠를 수도 있습니다 (예 : Linux 시스템의 경우 파일 데이터가 캐시되었거나 이전에 읽거나 쓰여졌을 수 있음).
그러나 파일을 읽는 경우 (즉, 메가 바이트 크기의 파일) 시스템에서 대부분의 시간이 소요되므로 코딩에 영향을 미치지 않습니다.
메가 바이트 파일을 읽는 것이 오늘날의 컴퓨터에서 빠르게 이루어져야합니다. 꼭 필요한 경우 시스템을 개선하기 위해 더러운 시스템 트릭을 사용할 수 있습니다 (예 : Linux readahead system call).
사실, 귀하의 질문에 놀랐습니다. 1 메가 바이트를 읽는 것이 오늘 빠릅니다!
감사합니다.
당신 말이 맞아요. 몇 가지 특수한 상황 (SSD, RAID, 대용량 데이터 세트)이 있는데 도움이 될 수 있지만 많지 않은 데는 1MB 밖에되지 않습니다. 단일 디스크 만 사용할 수있는 경우 다중 스레드 읽기는 상황을 항상 악화시킵니다. 디스크는 본질적으로 단일 스레드 미디어입니다. – dmeister
- 1. 여러 개의 BufferedReader가있는 단일 파일 읽기
- 2. 단일 페이지에 3 개의 목록 구현
- 3. 파일 읽기/쓰기 스레드를 사용하는 방법은 무엇입니까?
- 4. 파이썬에서 다중 스레드에서 단일 파일 읽기
- 5. 여러 스레드를 통해 파일 쓰기 읽기
- 6. 다중 스레드로 단일 파일 읽기 : 속도가 빨라야합니까?
- 7. JavaScript로 로컬 파일 읽기 : 파일 속성에 해당하는 단일 파일
- 8. Joomla를 사용하여 단일 페이지에 3 개의 다른 기사를 표시하려면 어떻게해야합니까?
- 9. system.io를 사용하여 파일 읽기?
- 10. 스레드를 사용하여 서블릿 파일 다운로드
- 11. 단일 스레드를 완료까지 실행
- 12. 단일 폴더에서 3 개의 스크립트를 실행하십시오.
- 13. NAudio를 사용하여 3 개의 wav 파일을 C#의 3 개 채널로 된 단일 파일로 결합하는 방법?
- 14. fgetc를 사용하여 파일 읽기
- 15. VBScript를 사용하여 CSV 파일 읽기
- 16. SQLalchemy를 사용하여 큰 파일 읽기
- 17. 두 개의 스레드를 사용하여 textBox에 쓰기
- 18. 모노 변환을위한 웨이브 파일 읽기 (Minix 3)
- 19. Node.js가 실제로 아래에 여러 개의 스레드를 사용합니까?
- 20. 여러 개의 스레드를 만들어 s3에 업로드
- 21. PHPExcel을 사용하여 여러 파일 읽기
- 22. 몇 개의 스레드를 만들까요?
- 23. 수천 개의 스레드를 모니터링하는 GUI
- 24. Xcode : 여러 개의 오디오 파일, 단일 버튼
- 25. 단일 셀은 Java를 사용하여 Excel에서 읽기
- 26. EDI 형식의 파일 읽기
- 27. 포트란에서 여러 파일 읽기
- 28. .NET을 사용하여 XML 파일 읽기
- 29. VB.Net을 사용하여 .btr 파일 읽기
- 30. 분산 캐시를 사용하여 파일 읽기
http://stackoverflow.com/questions/1547209/java-multithreading-reading-a-single-large-file 관련? –