为此,您需要1)一种将数字传递到新线程中的方法,2)启动线程,3)等待线程完成,以及4)从线程中获取结果的方法。
您可以通过构造函数传递数字。您可以有一个名为“答案”的公共数据成员来包含计算结果。可以使用
start()方法完成启动线程,然后该
join()方法等待线程完成。
下面的示例演示了这一点。那应该是一个很好的起点;从这里,您可以消除一些混乱,以根据需要获得更好的API。
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"); } }}


