다음 code 피보나치 수 문제를 병렬 처리하려고 시도합니다. 스레드의 수가 제한되도록 어떻게 수정 할 수 있습니까?피보나치 스레드를 사용하여
나는 피보나치가 자연 스레 쓰레딩을 할 수 없다는 것을 알고 있습니다. 그러나 스레딩을 통해 어떻게 최적화 될 수 있는지 알고 싶습니다.
public class Fib extends Thread
{
private int x;
public int answer;
public Fib(int x) {
this.x = x;
}
public void run() {
if(x <= 2)
answer = 1;
else {
try {
Fib f1 = new Fib(x-1);
Fib f2 = new Fib(x-2);
f1.start();
f2.start();
f1.join();
f2.join();
answer = f1.answer + f2.answer;
}
catch(InterruptedException ex) { }
}
}
public static void main(String[] args)
throws Exception
{
try {
Fib f = new Fib(Integer.parseInt(args[0]));
f.start();
f.join();
System.out.println(f.answer);
}
catch(Exception e) {
System.out.println("usage: java Fib NUMBER");
}
}
}
아침에 숙제 냄새가납니다. –
@ivo 숙제가 아닙니다! – Mariah
시퀀스의 각 요소가 마지막 함수이기 때문에 다중 스레드 피보나치 생성기를 작성할 수 있는지 확신 할 수 없습니다. – cdhowie