Java多线程(6)--Callable接口创建线程
与使用Runnable相比, Callable功能更强大些
①相比run()方法,可以有返回值
②方法可以抛出异常
③支持泛型的返回值
④需要借助FutureTask类,可以获取返回结果
Future接口
①可以对具体Runnable、Callable任务的执行结果进行取消、查询是否完成、获取结果等
②FutrueTask是Futrue接口的唯一的实现类
③FutureTask同时实现了Runnable,Future接口,它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值
示例:输出100以内偶数,并输出其总和
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;//实现Callable接口
class NewThread implements Callable {private int sum;@Overridepublic Object call() throws Exception {for (int i = 0; i <= 100; i++) {if (i % 2 == 0){System.out.println(i);sum += i;}}return sum;}
}public class NewThreadTest {public static void main(String[] args) {//创建Callable接口实现类对象NewThread newThread = new NewThread();//创建Future接口实现类对象FutureTask futureTask = new FutureTask(newThread);//创建Thread类对象Thread thread = new Thread(futureTask);thread.start();try {//可以通过FutureTask对象进行操作Object o = futureTask.get();System.out.println("总和为" + o);} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}
}
Java多线程(6)--Callable接口创建线程相关推荐
- Java用Callable接口创建线程
一.概述 使用Callable接口创建线程能够返回数据.与Runnable接口创建线程的方式有点类似,也是需要通过Thread类来创建线程.由于Thread类的构造函数中没有Callable接口, ...
- 【多线程】采用Callable接口创建线程
前言 java5开始,提供了Callable接口,是Runable接口的增强版.同样用Call()方法作为线程的执行体,增强了之前的run()方法.因为call方法可以有返回值,也可以声明抛出异常. ...
- 教你学Java | 带你学习Java多线程(续:创建线程的其他方式与activeCount方法的浅谈)
前言 相信每一位程序猿对"多线程"这个概念应该都不陌生,无论是在开发还是面试的时候,都会遇到多线程的问题.不过,一定有很多小伙伴才刚刚接触到多线程,那么在此就由小弟为各位小伙伴细细 ...
- java 多线程编程(包括创建线程的三种方式、线程的生命周期、线程的调度策略、线程同步、线程通信、线程池、死锁等)
1 多线程的基础知识 1.1 单核CPU和多核CPU 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务.微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那 ...
- Callable接口-创建线程的第三种方法
Callable和Runable相比 //Runnable和Callable区别 //1.Callable带返回值 //2.run()不会抛异常,call()会抛异常 //3.实现的接口不同 pack ...
- Java多线程-实现Callable接口的call()方法,示例
创建步骤,首先实现Callable接口的call()方法并指定返回值:然后创建实现类实例:FutureTask类使用Callable实现类的实例通过FutureTask的单参数构造器创建FutureT ...
- java多线程------实现Runnable接口创建多进程,实现资源共享
//实现Runnable接口创建多进程,实现资源共享 package xian_cheng;public class Example05 {public static void main(String ...
- 实现Callable接口创建多线程
新增方式一:实现Callable接口 与Runnable相比,Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助FutureTask类,比如获 ...
- java多线程编程(三)- 线程的创建
一:线程说明 1,Java虚拟机允许应用程序并发的运行多个执行线程. 2,线程都有自己的优先级,新线程会继承创建它的线程优先级. 3,线程可以为守护线程和用户线程,如java资源回收线程为守护线程.当 ...
最新文章
- NSight Compute 用户手册(上)
- 彩虹物语服务器维护,11.19《彩虹物语》服务器维护及数据互通公告
- 合同相似可逆等价矩阵的关系及性质_笔记:辛矩阵和Siegel上半平面
- 19个强大、有趣、又好玩的 Linux 命令!
- 深信服手机客户端_纳米手机防水镀膜靠不靠谱,电视报道后才知道有多坑。
- 程序员为什么要写博客?怎么写博客?
- 不同品牌路由器无线桥接的设置方法
- matlab2018a字体乱码怎么办,解决Matlab 2018a源代码的中文支持问题
- 创建API Signing Key
- The bean ‘Xxx‘ could not be injected as a ‘Xxx‘ because it is a JDK dynamic proxy that implements:x
- 获取美国gfs风向数据 转换成png与json 记录软件安装环境
- 阿里巴巴java开发手册(泰山版)在线阅览
- 二类电商网页设计_用类设计网页
- SDNU-1093.DNA排序
- 编写java程序计算梯形面积_【Java】编写一个应用程序计算梯形和圆形的面积。...
- Visual Studio 2010中国团队的研发内幕
- 交流电压和电流数据记录器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 【设计模式】建造者模式:你创建对象的方式有它丝滑吗?
- 爱情,你究竟是什么模样?
- UE4虚幻引擎关于小地图制作教程