第五篇、Callable接口实现多线程
文章目录
- 前言
- 一、实现Callable接口
- 二、代码示例
- 1.Callable接口实现多线程
- 总结
前言
上一篇我们共同认识了并发问题,那么本篇我们将一起来学习Callable接口实现多线程。
一、实现Callable接口
上篇内容我们通过实现Runnable实现多线程,本篇我们将学习如何继承java中的Callable来实现多线程。
操作步骤:
- 实现Callable接口,需要返回值。
- 重写call()方法,需要抛出异常。
- 创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);
- 提交执行: Future r1 = ser.submit(t1);
- 获取结果:boolean rs1 = r1.get();
- 关闭服务:ser.shutdownNow();
二、代码示例
1.Callable接口实现多线程
代码如下(示例):
TestCallable类
public class TestCallable implements Callable<Boolean> {private String url;private String name;public TestCallable(String url, String name) {this.url = url;this.name = name;}@Overridepublic Boolean call() {WebDownLoader03 webDownLoader = new WebDownLoader03();webDownLoader.downloader(url,name);System.out.println("下载的文件名:"+name);return true;}public static void main(String[] args) throws ExecutionException, InterruptedException {TestCallable t1 = new TestCallable("https://up.tt98.com/uploadfile/sjbz/2020-11-11/c57c4f2e092bf23ec0c8e940664d6572.jpg","1.jpg");TestCallable t2 = new TestCallable("https://up.tt98.com/uploadfile/sjbz/2020-11-11/c57c4f2e092bf23ec0c8e940664d6572.jpg","2.jpg");TestCallable t3 = new TestCallable("https://up.tt98.com/uploadfile/sjbz/2020-11-11/c57c4f2e092bf23ec0c8e940664d6572.jpg","3.jpg");//创建执行服务ExecutorService ser = Executors.newFixedThreadPool(3);//提交执行Future<Boolean> r1 = ser.submit(t1);Future<Boolean> r2 = ser.submit(t2);Future<Boolean> r3 = ser.submit(t3);//获取结果boolean rs1 = r1.get();boolean rs2 = r2.get();boolean rs3 = r3.get();//关闭服务ser.shutdownNow();}
}
WebDownLoader03类
//下载器
class WebDownLoader03{//下载方法public void downloader(String url,String name){try {FileUtils.copyURLToFile(new URL(url),new File(name));}catch (IOException e){e.printStackTrace();System.out.println("IO异常,downloader方法出现异常。");}}
}
运行结果:
总结
第五篇、Callable接口实现多线程相关推荐
- java callable 详解_详解Java Callable接口实现多线程的方式
在Java 1.5以前,创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口.无论我们以怎样的形式实现多线程,都需要调用Thread类中的start方法去向操作系统请求 ...
- 实现Callable接口创建多线程
新增方式一:实现Callable接口 与Runnable相比,Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助FutureTask类,比如获 ...
- 多线程-Callable接口
通过实现Callable接口实现多线程. 环境:IntelliJ IDEA.JDK1.8 步骤 自定义类,实现Callable接口,需要返回值(call方法) 实现call()方法,编写线程执行体(可 ...
- JavaSE基础二十:Java 多线程(线程基础知识、Java 多线程、Java 实现多线程(继承 Thread 类、实现 Runnable 接口、实现 Callable 接口))
本章目录 1.基础知识准备 2.Java 多线程概述 3.Java 实现多线程 3.1.继承 Thread 类 如何开启新线程 Thread 类常用方法 多线程中的同步 Thread 类同步方法 多线 ...
- Callable 接口实现java 的多线程
java 中创建多线程最常见的是继承Thread 的子类重写run() 方法,还有就是实现Runnable 接口 我们最好使用实现了Runnable 接口的方法原因有两点: ①因为java 的单继承的 ...
- Callable 接口
Callable 接口 是 java.util.concurrent.下的一个泛型接口 , 只有一个call () 方法 , 它是有返回值的 , 我们可以获取多线程执行的结果 , 使用 Callab ...
- 认识Callable接口
认识Callable接口 Runnable接口和Callable接口的不同 callable接口,1.可以有返回值,2.可以抛出异常,3.调用方法不同, Runnable接口不可以 实现Callabl ...
- 多线程——实现Callable接口
前两篇博客(多线程--继承Thread类.多线程--实现Runnable接口 )介绍了java使用线程的两种方法.这篇博客继续介绍第三种方法--实现Callable接口. 先说一下Runnable和C ...
- 秒杀多线程第十五篇 关键段,事件,互斥量,信号量的“遗弃”问题
秒杀多线程第十五篇 关键段,事件,互斥量,信号量的"遗弃"问题 在<秒杀多线程第九篇 经典线程同步总结 关键段 事件 互斥量 信号量>中对经典多线程同步互斥问题进行了回 ...
最新文章
- 使用C++ ostringstream来格式化字符串输出
- 谷歌兄弟公司Wing将于10月开始试点无人机配送
- 拆解19元的儿童电话手表,要是能二次开发就好了
- 如果我要...(开发版)
- Snmp学习总结系列——开篇
- 获取上传图片的大小 php,thinkphp5 获取上传图片的大小和信息
- html浏览器的区别是什么意思,不同浏览器对css的识别有区别吗?
- 如何在Linux上制作一个屏幕录像视频教程
- electron 的窗口设置最大化 最小化
- SSM开发环境的搭建(方式二)
- Java多线程常用面试题(含答案,精心总结整理)
- C#——绘制箭头的方法
- EPIC的服务器稳定吗,epic国内有服务器吗(epic服务器在哪)
- 关于GPIO的内部结构及编程步骤
- graphql java如何使用_graphql-java使用手册:part10 如何落地应用(Application concerns)...
- 网络对抗技术 实验三
- python爬虫热点项目—滑块验证码项目(以Bilili为例)
- Ubantu搭建深度学习和强化学习环境
- DllNotFoundException
- C++、高响应比优先算法