与使用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接口创建线程相关推荐

  1. Java用Callable接口创建线程

     一.概述  使用Callable接口创建线程能够返回数据.与Runnable接口创建线程的方式有点类似,也是需要通过Thread类来创建线程.由于Thread类的构造函数中没有Callable接口, ...

  2. 【多线程】采用Callable接口创建线程

    前言 java5开始,提供了Callable接口,是Runable接口的增强版.同样用Call()方法作为线程的执行体,增强了之前的run()方法.因为call方法可以有返回值,也可以声明抛出异常. ...

  3. 教你学Java | 带你学习Java多线程(续:创建线程的其他方式与activeCount方法的浅谈)

    前言 相信每一位程序猿对"多线程"这个概念应该都不陌生,无论是在开发还是面试的时候,都会遇到多线程的问题.不过,一定有很多小伙伴才刚刚接触到多线程,那么在此就由小弟为各位小伙伴细细 ...

  4. java 多线程编程(包括创建线程的三种方式、线程的生命周期、线程的调度策略、线程同步、线程通信、线程池、死锁等)

    1 多线程的基础知识 1.1 单核CPU和多核CPU 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务.微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那 ...

  5. Callable接口-创建线程的第三种方法

    Callable和Runable相比 //Runnable和Callable区别 //1.Callable带返回值 //2.run()不会抛异常,call()会抛异常 //3.实现的接口不同 pack ...

  6. Java多线程-实现Callable接口的call()方法,示例

    创建步骤,首先实现Callable接口的call()方法并指定返回值:然后创建实现类实例:FutureTask类使用Callable实现类的实例通过FutureTask的单参数构造器创建FutureT ...

  7. java多线程------实现Runnable接口创建多进程,实现资源共享

    //实现Runnable接口创建多进程,实现资源共享 package xian_cheng;public class Example05 {public static void main(String ...

  8. 实现Callable接口创建多线程

    新增方式一:实现Callable接口 与Runnable相比,Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助FutureTask类,比如获 ...

  9. java多线程编程(三)- 线程的创建

    一:线程说明 1,Java虚拟机允许应用程序并发的运行多个执行线程. 2,线程都有自己的优先级,新线程会继承创建它的线程优先级. 3,线程可以为守护线程和用户线程,如java资源回收线程为守护线程.当 ...

最新文章

  1. NSight Compute 用户手册(上)
  2. 彩虹物语服务器维护,11.19《彩虹物语》服务器维护及数据互通公告
  3. 合同相似可逆等价矩阵的关系及性质_笔记:辛矩阵和Siegel上半平面
  4. 19个强大、有趣、又好玩的 Linux 命令!
  5. 深信服手机客户端_纳米手机防水镀膜靠不靠谱,电视报道后才知道有多坑。
  6. 程序员为什么要写博客?怎么写博客?
  7. 不同品牌路由器无线桥接的设置方法
  8. matlab2018a字体乱码怎么办,解决Matlab 2018a源代码的中文支持问题
  9. 创建API Signing Key
  10. The bean ‘Xxx‘ could not be injected as a ‘Xxx‘ because it is a JDK dynamic proxy that implements:x
  11. 获取美国gfs风向数据 转换成png与json 记录软件安装环境
  12. 阿里巴巴java开发手册(泰山版)在线阅览
  13. 二类电商网页设计_用类设计网页
  14. SDNU-1093.DNA排序
  15. 编写java程序计算梯形面积_【Java】编写一个应用程序计算梯形和圆形的面积。...
  16. Visual Studio 2010中国团队的研发内幕
  17. 交流电压和电流数据记录器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. 【设计模式】建造者模式:你创建对象的方式有它丝滑吗?
  19. 爱情,你究竟是什么模样?
  20. UE4虚幻引擎关于小地图制作教程

热门文章

  1. 了解播放过滤器API
  2. 枚举枚举和修改“最终静态”字段的方法
  3. Java应用程序中的SQL注入
  4. Hibernate懒/急加载示例
  5. Spring动态物业管理
  6. 小程序二级页面tabbar_小程序页面推广踩坑记
  7. 图像融合亮度一致_重磅干货低光图像处理方案
  8. pytest框架_Python最火的第三方开源测试框架——pytest
  9. 东北电力大学计算机专业几本,东北电力大学是几本?东北电力大学怎么样?
  10. html dom的nodetype值介绍,HTML DOM nodeType 属性