파일 배열의 각 루프마다 하나씩 있습니다. 각 파일에 대해 공통적으로 수행되는 특정 작업이 있습니다. 처리 할 파일이 많고 시간이 많이 걸립니다. 자바 스레드가 더 높은 성능을 얻을 수 있다면 제가 생각하고있었습니다. 나는 자바 스레드 프로그래밍에 익숙하지 않다. 도움이 필요하십니까파일 배열의 각 루프에 대해 각 루프마다 하나의 스레드를 생성합니다.
답변
한다고 가정을 FileReader 클래스는 하나의 파일을 처리하는 로직을 포함
public class FileReader implements Runnable {
String fileName;
public FileReader(String fileName) {
this.fileName = fileName;
}
public void run() {
processFile(fileName);
}
private void processFile(String fileName) {
// Your logic of processing the file.
}
}
그런
당신은 항상 당신이 사용 확인하기 위해 스레드 풀을 사용한다 디렉토리에있는 파일을 처리하기 위해 다음 코드를 추가합니다 시스템 리소스 각 우아하게
private static final int THREAD_COUNT = 10;
private static final ThreadPoolExecutor pool = new ThreadPoolExecutor(
THREAD_COUNT, THREAD_COUNT, 10, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>());
는
01 처리 할 파일FileReader reader = new FileReader(file.getAbsolutePath());
pool.execute(reader);
이 질문에 대한 답변입니다. 감사. 이것을 구현하고 작업 코드를 게시합니다. – VamsiKrishna
정말 각 파일에 대해해야 할 일과 병목 현상이 프로세싱에 어디에 있는지에 따라 다릅니다. 만약 당신이 처리하고있는 CPU - 바운드 (파일에서 읽은 데이터에 대한 많은 계산을해야합니다), 그럼 당신은 그들을 도울 CPU 코어를 가지고 더 많은 스레드를 만드는 것은 도움이되지 않습니다.
반면에 처리가 "파일 데이터를 서버에 제출하고 응답을 기다리십시오."및 요청을 동시에 전송해도 서버 속도가 느려지지 않으므로 파일 당 스레드가 도움이 될 수 있습니다 .
처리가 무엇에 관한 것인지 알지 못하면 실제로 부여 할 수있는 구체적인 권장 사항이 없습니다.
파일에 대한 작업은 파일 읽기 작업입니다. 파일을 읽고 파일을 편집하고 다시 저장합니다. – VamsiKrishna
모든 스레드를 관리하는 추가 오버 헤드가 끝나기 전에 동시에 실행할 수있는 스레드 수를 알아 내려면 몇 가지 테스트를 수행하는 것이 좋습니다. @byter가 제안한 ThreadPoolExecutor 클래스는 프로그램에서 사용하는 스레드 수를 제한하는 좋은 방법입니다. –
입력 내용에 @Joethanks가 있습니다. 예 스레드 풀은 내가 찾고있는 것이 었습니다. – VamsiKrishna
- 1. 각 루프마다 배열의 모든 항목
- 2. VB.NET에서 2D 배열의 각 루프에 대해
- 3. Perl의 각 루프에 대해
- 4. 각 루프마다 xml을 mysql에 작성하십시오.
- 5. generic을 사용하고 jsp의 각 루프에 대해
- 6. ExpressionEngine 템플릿의 각 루프에 대해?
- 7. 각 루프에 대해 하나씩 두십시오.
- 8. 각 루프에 대해 즉시 종료
- 9. 포스트 배열의 각 루프에 대해 mysql 업데이트 사용
- 10. 간단한 HTML DOM 파서와 각 루프에 대해
- 11. 테이블 안의 논리. 형식화를위한 각 루프에 대해
- 12. 루비는 각 루프마다 무엇을 출력합니까?
- 13. 각 루프마다 a를 사용하여 배열 목록에서 두 요소를 찾습니다.
- 14. 각 루프에 대해 컬렉션을 수정할 수없는 이유
- 15. 델피는 각 루프에 대해 어떤 결과를 얻었습니까?
- 16. VBA 모양의 gluedshapes에 대한 각 루프에 대해
- 17. 각 루프에 대해 뷰백 이름에 변수를 붙입니다.
- 18. 각 루프에 대해 익명 함수의 변수 바인딩
- 19. 각 루프에 대해 잠을 자지 않습니다.
- 20. 각 루프마다 배열을 표시 할 수 있습니까?
- 21. 배열의 루프에 대해
- 22. 더 빠른 방법 : 배열을 클래스로 전달하고 각 루프에 대해 a 수행하기 또는 클래스의 각 루프에 대해 수행하기
- 23. performSelectorInBackground는 각 호출에 대해 새 스레드를 생성합니까?
- 24. OpenMP의 각 내부 루프에 대한 스레드 시작하기
- 25. 각 루프에 대한 xsl-fo
- 26. 각 프로젝트 또는 각 모듈에 대해 하나의 DLL을 사용합니까?
- 27. 목록의 각 요소에 대해
- 28. 각 루프에 $ .post ASP.NET MVC
- 29. 요소 배열의 각 요소에 값 배열의 각 elem을 할당합니다. jQuery
- 30. 이름 배열의 각 요소
어떤 연구를 했습니까? 너 뭐 해봤 니? 어떤 문서를 읽었습니까? – Gray
@gray 나는 모바일에서이 질문을하고 있습니다. 시도한 코드가 없습니다. 나는 가능할 때 질문을 업데이트 할 것이다. 나는 오라클과 몇몇 사이트에서 제공 한 튜토리얼을 읽었습니다. – VamsiKrishna