2013-09-07 2 views
0

?컴퓨팅에서 2 개 이상의 RecursiveActionTasks 호출() 다음 코드에서 많은 RecursiveAction를 호출하는 단점이 될 것입니다 무엇

클래스 RecursiveActionThing는 RecursiveAction 확장 {

int numbers = 1000; 
public RecursiveActionThing(int numbers) 
{ 
    this.numbers = numbers; 

} 
public void compute() 
{ 
    if (numbers<500) 
    { 
     for (int i =0;i<numbers;i++) 
     { 
      System.out.println(i); 
     } 
    } 
    else{ 
     invokeAll(new RecursiveActionThing(numbers/2),new RecursiveActionThing(numbers/2), new RecursiveActionThing(numbers/2), new RecursiveActionThing(numbers/2)); 

    } 
} 

}

지금까지 나는 단지이 작업을 호출, 그래서 아마 위의 호출이 모든 작업을 만드는 대규모 오버 헤드를 만들려고 일을 보았다 그런데 왜 paramenter로 varargs를 두는 것이 허용됩니까? 특정 상황에서 유용 할 수 있습니까? 어느 것? 미리 감사드립니다.

답변

0

jsr166와 함께 제공되는 테스트 클래스에서이 좋은 예가있다, MatrixMultiply.java 당신은 here

0

이 훨씬 이해가되지 않는 것을 발견 할 수 있습니다. 당신이 특정 번호를 실행 한 찾고 있다면 당신은 왜 paramenter으로 가변 인자를 배치하여 허용하지만

2. 간격으로 분할을 통해 스스로를 제어 할 수 있어야한다? 특정 상황에서 유용 할 수 있습니다? 어느 것?

나는이 사용되는 유용한 이유를 생각할 수 없다. 이것은 ExecutorService의 캐리 오버이며 기능을 구현하는 것입니다. 나는 그것을 추천하지 않을 것이다.

이 질문을 살펴보십시오. 희망만큼 행동하지 않습니다.

ForkJoinPool seems to waste a thread