Fabriqué en France Drapeau français

forkjoinpool 예제

로깅은 상황이 느려질 뿐입니다. 실제로 로그(또는 INFO로 설정된 로그)없이 예제를 실행하면 디렉터리 크기가 훨씬 빠르게 계산됩니다. 아래 예제에서 처리할 작업 단위는 워크로드라는 String으로 표시됩니다. 데모를 위해 이 작업은 무의미한 작업입니다. 다음은 이 문서의 마지막 예입니다. 디렉터리 크기를 계산하기 위해 SizeOfFileAction 내부 클래스를 사용하는 DirSize의 수정된 버전을 보여 줍니다. 이 섹션에서는 Fork/Join Framework의 작동 방식과 스레드가 다른 스레드의 큐에서 작업을 훔치는 방법에 대해 자세히 설명합니다. 다음 섹션에서는 Fork/Join Framework의 몇 가지 실용적인 예제를 보고 얻은 결과를 분석합니다. 포크 /조인 프레임 워크를 사용하여 멀티 프로세서 시스템에서 동시에 수행 할 작업에 대한 사용자 정의 알고리즘을 구현하는 것 외에도 (예 : 이전 섹션의 ForkBlur.java 예제) Java SE에는 일반적으로 유용한 기능이 있습니다. 이미 포크/조인 프레임워크를 사용하여 구현되었습니다. Java SE 8에서 도입된 이러한 구현 중 하나는 java.util.Arrays 클래스에서 parallelSort() 메서드에 사용됩니다. 이러한 메서드는 sort()와 유사하지만 포크/조인 프레임워크를 통해 동시성을 활용합니다. 대형 어레이의 병렬 정렬은 멀티프로세서 시스템에서 실행할 때 순차적 정렬보다 빠릅니다.

그러나 이러한 메서드가 포크/조인 프레임워크를 정확히 활용하는 방법은 Java 자습서의 범위를 벗어납니다. 이 정보는 Java API 설명서를 참조하십시오. 이 예제에서는 작업 관리를 위해 ForkJoinPool 및 ForkJoinTask 클래스에서 제공하는 비동기 메서드를 사용하는 방법을 배웁니다. 폴더 와 해당 하위 폴더 안에 결정된 확장자 파일을 검색 하는 프로그램을 구현 하려고 합니다. 구현하려는 ForkJoinTask 클래스는 폴더의 내용을 처리합니다. 해당 폴더 내의 각 하위 폴더에 대해 비동기 방식으로 ForkJoinPool 클래스에 새 작업을 보냅니다. 해당 폴더 내의 각 파일에 대해 작업은 파일의 확장/을 확인하고 진행되면 결과 목록에 추가합니다. 다음 예제에서는 FilePath.TEST_DIR 상수에 정의된 파일 경로를 사용하여 이 예제를 실행하는 방법을 보여 주며, 이 예제를 실행합니다. 포크 조인 예제는 재귀 루프를 사용하여 피보나치 번호를 찾습니다. recursiveTask 예제에서는 invokeAll() 메서드를 사용하여 하위 작업 시퀀스를 풀에 제출했습니다. 동일한 작업은 fork() 및 join()로 수행할 수 있지만 결과 순서에 영향을 미칩니다.

MENU