Callable 接口实现多线程| 学习笔记

开发者学堂课程【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 接口实现多线程| 学习笔记

二、范例:使用 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()方法,可以有返回值;

上一篇:Winform开发框架之权限管理系统的改进


下一篇:【第21个代码模型】Map 集合(Map 接口概述)|学习笔记