递归实现斐波那契数列时,若所求的第n项数值较大,需要等待较长的时间才能输出结果,与此同时主线程不能计算其他的数,只能等待计算结果。
学习线程后,我们可以通过子线程实现即使当输入的n较大时,仍然可以输入其他的n并执行计算。
代码如下:
import java.util.Scanner;
class MyThread extends Thread{
public int n;
@Override
public void run() {
long r=Demo1.fib(n);
System.out.printf ("fib(%d)=%d \n",n,r);
}
}
public class Demo1 {
public static int fib(int n) {
//O(2^n)
if (n<2) {
return n;
}
return fib(n-1)+fib(n-2);
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
while (s.hasNextLine()) {
int n=s.nextInt();
MyThread t=new MyThread();
t.n=n;
t.start();
}
}
}
运行结果: