编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:
在runThread(int num)函数中执行线程,创建Callable线程,Callable线程需要执行求第num项斐波那契数列的值,最后在runThread函数中获取Callable线程执行的结果,并打印输出。
斐波那契数列(Fibonacci数列)
这个数列从第3项开始,之后的每一项都等于它的前两项数字之和。
这个数列为:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
输入:3
输出:线程的返回值为:2
输入:5
输出:线程的返回值为:5
task部分代码:
package step2;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class Task {
public void runThread(int num) {
//请在此添加实现代码
/********** Begin **********/
// 在这里开启线程 获取线程执行的结果
ThreadCallable t1=new ThreadCallable(num);
FutureTask<Integer> ft1=new FutureTask<>(t1);
Thread thread1=new Thread(ft1,"thread1");
thread1.start();
try{
System.out.println("线程的返回值为:"+ft1.get());
}catch(Exception e){
e.printStackTrace();
}
/********** End **********/
}
}
//请在此添加实现代码
/********** Begin **********/
/* 在这里实现Callable接口及方法 */
class ThreadCallable implements Callable<Integer> {
int num;
ThreadCallable(int num){
this.num=num;
}
ThreadCallable(){
}
public Integer call() throws Exception{
return getNum(num);
}
private int getNum(int num){
if(num<3){
return 1;
}
else{
return getNum(num-1)+getNum(num-2);
}
}
}
/********** End **********/