1.为什么要是用Callable而不使用Runnable?
使用Runnable接口线程执行完毕后没有返回值,而(java.util.current.)Callable接口有返回值。
public interface Callable<V>{
public V call() throws Exception;
}
Callable 定义的时候可以设置一个泛型,此泛型的类型就是返回数据的类型
内容摘抄自视频
例:
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
class MyThread implements Callable<String>{
public String call() throws Exception{
for(int x=0;x<10;x++){
System.out.println("*********线程执行、x="+x);
}
return "OVER";
}
}
public class ThreadDemo {
public static void main(String[] args) throws Exception{
FutureTask<String> task=new FutureTask<String>(new MyThread());
new Thread(task).start();
System.out.println("线程返回数据"+task.get());
}
}
执行结果: