1.Callable是什么,可以干什么用?

Callable是一个创建线程时使用的一个接口,那它是干什么的呢?它和Runnable可以说是兄弟两,Runnable在创建多线程的时候是没有返回值的,但是Callable它是带有返回值的。我们一般想要有返回值的多线程的时候就可以使用Callable。

2.用Runnable创建有返回值的多线程

我们知道用Runnable创建多线程的时候是没有返回值的,但是我们可以创建一个专门用于返回的元素,从而把值就可以返回回去了。

static class result{public static int sum;}public static void main(String[] args) throws InterruptedException {Object locker=new Object();Thread thread=new Thread(new Runnable() {@Overridepublic void run() {int sum=0;for (int i = 0; i < 10; i++) {sum+=i;}result.sum=sum;synchronized (locker){locker.notify();}}});thread.start();while (result.sum==0){synchronized (locker){locker.wait();}}System.out.println(result.sum);}

3.如何用Callable来创建一个带返回值的线程

这里面有一个重要的点就是Thread它不能直接接收Callable这个接口,Callable需要用FutureTsak进行封装一下,然后再传给Thread。

public static void main(String[] args) throws ExecutionException, InterruptedException {Callable<Integer>callable=new Callable<Integer>() {@Overridepublic Integer call() throws Exception {int sum=0;for (int i = 0; i <=1000 ; i++) {sum+=i;}return sum;}};FutureTask<Integer>futureTask=new FutureTask<>(callable);Thread t=new Thread(futureTask);t.start();System.out.println(futureTask.get());}

Callable接口的使用相关推荐

  1. java.util.concurrent.Callable 接口 源码

    2019独角兽企业重金招聘Python工程师标准>>> 线程池相关 源码: package java.util.concurrent;@FunctionalInterface pub ...

  2. Java多线程之Callable接口的实现

    import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.ut ...

  3. 多线程——实现Callable接口

    前两篇博客(多线程--继承Thread类.多线程--实现Runnable接口 )介绍了java使用线程的两种方法.这篇博客继续介绍第三种方法--实现Callable接口. 先说一下Runnable和C ...

  4. 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )

    文章目录 一.Future 接口 1.Future 接口简介 2.取消任务方法 3.Future 接口源码注释 二.Callable 接口 三.Runnable 接口 上一篇博客 [Android 异 ...

  5. 5、JUC--实现 Callable 接口

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

  6. 【JUC并发编程07】Callable接口

    文章目录 7 Callable接口 7.1 Callable接口创建线程 7.2 FutureTask 7 Callable接口 创建线程的多种方式: 继承Thread类 实现Runnable接口 C ...

  7. java callable 详解_Java多线程详解(七)------Callable接口介绍

    一.与runnable接口对比 1 创建新类MyThread实现runnable接口2 class MyThread implementsRunnable{3 @Override4 public vo ...

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

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

  9. Callable接口

    Runnable是执行工作的独立任务,但是它不返回任何值.如果希望任务在完成的同时能够返回一个值,可以通过实现Callable接口.在JDK5.0中引入的Callable接口是一种具有类型参数的泛型, ...

  10. 【Java】线程创建方式:Callable接口 / 使用线程池

    面试题:创建多线程有有哪几种方式? 回答:4种. 实现Runnable接口(重写Run方法) 继承Thread类 实现Callable接口(重写Call方法,与Run不同的是,Call方法有返回值) ...

最新文章

  1. AEAI WM v1.6.0 升级说明,开源工作管理系统
  2. 关于在Webservice里使用LinqToSQL遇到一对多关系的父子表中子表需要ToList输出泛型而产生循环引用错误的解决办法!(转)...
  3. E-UTRA channel bandwidths per operating band (36.101)
  4. 概要设计 重要性_儿童户外游乐场应如何设计-户外游乐设备厂家【经验分享】...
  5. HDD与OS的江湖恩怨
  6. 端口停止使用_我停止使用
  7. JSP PO VO BO DTO POJO DAO解释
  8. 「PKUWC2018」Slay the Spire
  9. 画出的点做交互_设计之下交互设计原型设计之概念设计
  10. 第三课 SVM(2)
  11. phpmyadmin登陆错误:The requested URL /phpmyadmin was not found on this serve
  12. js获取验证码倒计时60s(超简单)
  13. PHP面试常考内容之面向对象(3) 1
  14. configure:3855: gcc -V 5 gcc: error: unrecognized command line option '-V'
  15. 2018年四大爬虫代理IP提供商对比
  16. Java:详解List集合的排序功能
  17. AotucCrawler 快速爬取美女图片
  18. 高级计量经济学及stata应用_推荐使用的计量经济学教材
  19. 国瀚实业|怎么才能做好互联网投资理财
  20. 【Java】1、Java 基础入门

热门文章

  1. MySQL 的锁分类
  2. java的无参构造函数_Java 无参数构造函数的应用
  3. 如何坚持使用程序化系统?
  4. 用html4绘制海豚,小海豚怎么画?六步教你画一只可爱的海豚
  5. 基于Python的图像处理与机器视觉系统
  6. numpy快速生成one hot编码
  7. iPhone X首批供应只有200-300万台;小蓝单车回应逾期未退押金;传摩拜成立网约车部门丨价值早报
  8. js根据ip地址获取省份城市的方法
  9. python中的类js定时器(setTimeout)
  10. python stacking_详解 Stacking 的 python 实现