开发者学堂课程【Java高级编程:Callable 接口实现多线程】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/282
Callable 接口实现多线程
内容介绍
一、接口的定义
二、范例:使用 Callable 实现多线程处理
三、面试题:请解释 Runnable 与 Callable 的区别?
从最传统的开发来讲如果要进行多线程的实现肯定依靠的就是 Runnable。
但是 Runnable 接口有一个缺点:当线程执行完毕之后后无法获取一个返回值,所以从 JDK 1.5 之后就提出了一个新的线程实现接口: java.util.concurrent.Collable 接口。
一、接口的定义
@FunctionalInterface.
public interface callable {
public V call() throws Exception ;
}
可以发现 Callable 定义的时候可以设置一个泛型,此泛型的类型就是返回数据的类型,这样的好处是可以避免向下转型所带来的安全隐患。
二、范例:使用 Callable 实现多线程处理
class MyThread implements callable {
@override
public string call() throws Exception {
for (int x = 0 ; x < 10 ; x ++) {
system.out.println("*********线程执行、× = " +x);
}
return "线程执行完毕。";
}
}
public class ThreadDemo {
public static void main(String[] args) throws Exception {
FutureTask task = new FutureTask<>(new MyThread()) ;
new Thread(task).start();
System.out.println("【线程返回数据】" + task.get());
}
}
三、面试题:请解释 Runnable 与 Callable 的区别?
1.Runnable 是在 JDK1.0的时候提出的多线程的实现接口,而 Callable 是在 JDK 1.5之后提出的;
2.java.lang.Runnable 接口之中只提供有一个 run()方法,并且没有返回值;
3.java.util.concurrent.Callable 接口提供有 call()方法,可以有返回值;