必须要加<Integer>才可以通过编译,不然编译不通过,之前的答案没有加也给编译了。
package step2;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class Task {
public void runThread(int num) {
//请在此添加实现代码
/********** Begin **********/
// 在这里开启线程 获取线程执行的结果
Callable <Integer> cts = new ThreadCallable(num);
// 接收
FutureTask<Integer> ft = new FutureTask<>(cts);
new Thread(ft).start();
try {
Integer rr=ft.get();
System.out.println("线程的返回值为:" + rr);
} catch (Exception e) {
e.printStackTrace();
}
/********** End **********/
}
}
//请在此添加实现代码
/********** Begin **********/
/* 在这里实现Callable接口及方法 */
class ThreadCallable implements Callable<Integer> {
private int num;
ThreadCallable(){}
public ThreadCallable(int num){
this.num=num;
}
public Integer call() throws Exception {
int[] arr = new int[2];
arr[0]=1;
arr[1]=1;
for (int i =2; i < num; i++) {
int tmp=arr[1];
arr[1]=arr[0]+arr[1];
arr[0]=tmp;
}
return arr[1];
}
}
/********** End **********/