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

简介: 快速学习 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 定义的时候可以设置一个泛型,此泛型的类型就是返回数据的类型,这样的好处是可以避免向下转型所带来的安全隐患。

图片20.png

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

            </div>
相关文章
|
7月前
|
存储 Java
高并发编程之多线程锁和Callable&Future 接口
高并发编程之多线程锁和Callable&Future 接口
85 1
|
2月前
|
编解码 数据安全/隐私保护 计算机视觉
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
如何使用OpenCV进行同步和异步操作来打开海康摄像头,并提供了相关的代码示例。
103 1
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
|
2月前
|
Java C++
【多线程】JUC的常见类,Callable接口,ReentranLock,Semaphore,CountDownLatch
【多线程】JUC的常见类,Callable接口,ReentranLock,Semaphore,CountDownLatch
35 0
|
2月前
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
260 0
|
4月前
|
调度
多线程学习笔记
这篇文章是多线程学习笔记,涵盖了线程与进程的概念、多线程实现方式、线程状态、线程同步与不安全示例、死锁问题以及生产者与消费者问题等多线程编程的关键知识点。
多线程学习笔记
|
7月前
|
安全 Java
多线程(CAS, ABA问题, Runnable & Callable & 僵尸线程 & 孤儿进程)
多线程(CAS, ABA问题, Runnable & Callable & 僵尸线程 & 孤儿进程)
64 1
|
7月前
|
NoSQL 网络协议 关系型数据库
redis-学习笔记(redis 单线程模型)
redis-学习笔记(redis 单线程模型)
57 3
|
7月前
|
安全 Java 编译器
多线程 (下) - 学习笔记2
多线程 (下) - 学习笔记
49 1
|
7月前
|
存储 算法 Java
多线程 (下) - 学习笔记1
多线程 (下) - 学习笔记
49 1
|
7月前
|
设计模式 安全 NoSQL
多线程 (上) - 学习笔记2
多线程 (上) - 学习笔记
47 1