2017-05-21 12 views
0

나는 이미 포킹과 결합이 멀티 스레딩에 사용된다는 것을 알고 있지만 태스크가 분기 될 때 정확히 무슨 일이 일어나는지 이해하지 못한다. 작업을 포크로 실행하면 포크 작업이 계산 방법의 시작으로 돌아 가게됩니까? 아니면 그 일이 다른 일을합니까? 태스크가 계산 이외의 다른 메소드로 점프하여 fork 할 때 실행하려고한다면 어떻게해야할까요? 이것을 지정하기 위해 포함시킬 수있는 (instance).fork();의 확장이 있습니까?작업이 분기되면 정확히 무엇이 발생합니까?

답변

0

포크/조인 프레임 워크를 사용하는 작업은 실제로 더 작은 하위 작업을 split으로 재귀 적으로 가져와 동시에 실행할 수 있습니다. 분기별로 각 하위 작업은 다른 CPU에서 병렬로 실행하거나 동일한 CPU의 다른 스레드에서 실행할 수 있습니다. 모든 하위 작업의 실행이 완료되면 join 부분이 시작됩니다. 이 프로세스에서 모든 하위 작업의 결과가 재귀 적으로 단일 결과로 결합됩니다. 이 모든 과정은 '배경'에서 발생하며 유형의 스레드를 관리하는 ForkJoinPool이라는 스레드 풀을 사용하여 구현할 수 있습니다.

+0

작업이 분기되면 해당 하위 작업은 어떻게됩니까? 그들은 다른 기능을 즉시 실행하기 시작합니까, 아니면 다른 기능을 수행하기 위해 부름을받을 필요가 있습니까? 좀 더 자세히 설명해 주시겠습니까? – JKristol

+0

위의 업데이트 된 답변을 참조하십시오. –

+0

이러한 개별 스레드를 실행하는 방법의 예를 들려 줄 수 있습니까? 나는 아직 이해하지 못한다. 내가 얻으려고하는 것은 코드에서 갈래로 연결된 스레드가 어디로 가는지입니다. 분기 된 쓰레드가 다시 계산 메소드를 시작하는지 또는 호출 될 때까지 아무렇게나 앉아 있는지 확실하지 않습니다. – JKristol