Callable 接口

  一、Java 5.0 在 java.util.concurrent 提供了 一个新的创建执行线程的方式(之前有继承Thread 和 实现Runnable):Callable 接口

Callable 接口类似于 Runnable ,两者都是为那些其 实例 可能被另外一个线程执行的类设计的。但是 Runnable 接口的 run方法,不会有返回值,并且无法抛出结果检查的异常

  二、执行 Callable 方式 ,需要FutureTask 实现类的支持,用于接收运算结果(call方法的返回值),FutureTask 是 Future 接口的实现类
FutureTask.get() 获取结果的前提是, 线程进行了运算,即执行了 call 方法,所以FutureTask也可以用作闭锁

 /*
*一、创建执行线程的方式之三 :实现Callable 接口
* 相较于实现 Runnable 接口的方式,方法可以有返回值,并且可以抛出异常
* 二、执行 Callable 方式 ,需要FutureTask 实现类的支持,用于接收运算结果(call的返回值)
* FutureTask 是 Future 接口的实现类
* */
public class TestCallable {
public static void main(String[] args) {
CallableThread ct = new CallableThread();
//1.执行 Callable 方式 ,需要FutureTask 实现类的支持,用于接收运算结果(call的返回值)
FutureTask<Integer> result = new FutureTask<Integer>(ct); new Thread(result).start(); //2.接收线程运算后的结果,
//result.get() 获取结果的前提是, 线程进行了运算,即执行了 call 方法,
//否则result.get(); 是会阻塞的 ,无法结束; 这也很好理解,一定要返回结果,才能接收嘛!
try {
Integer sum = result.get(); //所以 FutureTask 也可用于 闭锁 (等某个线程计算完成后,才能继续执行这个操作)
System.out.println(sum);
} catch (Exception e) {
e.printStackTrace();
} }
} class CallableThread implements Callable<Integer> { //在实现接口指定的泛型即为返回值类型 //实现接口时指定的 类型,就是 call 方法的返回值类型
@Override
public Integer call() throws Exception {
int sum = 0;
for(int i = 0;i < 10;i++) {
System.out.println(i);
sum = sum + i;
}
return sum;
} }
/*
class CallableThread implements Runnable {
@Override
public void run() {
}
}*/

5.创建执行线程的方式之三 :实现Callable 接口的更多相关文章

  1. 51、多线程创建的三种方式之实现Callable接口

    实现Callable接口创建线程 Callable接口是在jdk5版本中加入的,这个接口在java.util.concurrent包下面,与其他两种方式不同的地方在于使用Callable接口创建的线程 ...

  2. 创建执行线程方式三:实现Callable接口

    Callable接口 ① Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口② Callable 接口类似于 Runnable, ...

  3. 8种创建Java线程的方式,你知道几个?

    作者:唐彤 简介 创建线程,是多线程编程中最基本的操作,彤哥总结了一下,大概有8种创建线程的方式,你知道吗? 1.继承Thread类并重写run()方法 public class CreatingTh ...

  4. 实现多线程的方式之实现Callable接口

    package com.hls.juc; import java.util.concurrent.Callable;import java.util.concurrent.ExecutionExcep ...

  5. 线程池的应用及Callable接口的使用

    public interface Executor { /** * Executes the given command at some time in the future.  The comman ...

  6. 创建多线程的第二种方法实现Callable接口

    1.实现Callable接口,重写call方法,有返回值 2.通过实现Callable接口创建的线程只能在线程池中使用. 3.返回值就是run方法返回的对象 4.通过future.get()可以获取到 ...

  7. 50、多线程创建的三种方式之实现Runnable接口

    实现Runnable接口创建线程 使用Runnable创建线程步骤: package com.sutaoyu.Thread; //1.自定义一个类实现java.lang包下的Runnable接口 cl ...

  8. java多线程 -- 创建线程的第三者方式 实现Callable接口

    Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个 ...

  9. 实现Callable接口创建线程

    创建执行线程有四种方式: 实现implements接口创建线程 继承Thread类创建线程 实现Callable接口,通过FutureTask包装器来创建线程 使用线程池创建线程 下面介绍通过实现Ca ...

随机推荐

  1. css简单学习属性3---css属性选择器

    1:通配符 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. thymeleaf中double/float格式化,四舍五入显示两位小数

    private Float balance; 代码: <span class="A124_balance_num" th:text="${#numbers.form ...

  3. python数据分析数据标准化及离散化详解

    python数据分析数据标准化及离散化详解 本文为大家分享了python数据分析数据标准化及离散化的具体内容,供大家参考,具体内容如下 标准化 1.离差标准化 是对原始数据的线性变换,使结果映射到[0 ...

  4. 浅谈Delphi高效使用TreeView

    本来我一直都是使用递归算法, 效率很低 下边这段代码是我原来写的 ------------------------------------------------------------------- ...

  5. Linux——定时任务crontab

    linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题. cron介绍 我们经常使用的是crontab命令是cron table的简写,它是cron的配 ...

  6. 使用httpwebrequest Post数据到网站

    怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数据到网站等.假如某个页面有个如下的表单(Form): <form nam ...

  7. Charles 教程

    本文介绍 charles 教程 - 代理抓包的使用方法 本文参考了:阿西河 Charles 教程 Charles Charles是一个HTTP代理/ HTTP监视器/反向代理,使开发人员能够查看其机器 ...

  8. 安装CCS提示错误Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机

    问题如图所示: 解决方案: 放在D:\目录下 windows键+X  选择  命令提示符(管理员)  一定要是管理员 打开cmd 分别执行下面两句.红色部分就是自己的更新程序了.其他安装同理 例如Wi ...

  9. 最新 多益网络java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿. 多益网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了 多益网络.6.7月主要是做系统复习.项目复盘.Le ...

  10. Linux集群环境准备及20项基础优化

    中小规模集群架构: 1.什么是集群? 简单地说,集群就是一堆机器 做同一件事, 例如:京东(www.jd.com)提供卖东西服务这就是一件事,可能是几千台服务器,在背后运转支撑这个网站. www.ba ...