Callable接口的使用
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接口的使用相关推荐
- java.util.concurrent.Callable 接口 源码
2019独角兽企业重金招聘Python工程师标准>>> 线程池相关 源码: package java.util.concurrent;@FunctionalInterface pub ...
- Java多线程之Callable接口的实现
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.ut ...
- 多线程——实现Callable接口
前两篇博客(多线程--继承Thread类.多线程--实现Runnable接口 )介绍了java使用线程的两种方法.这篇博客继续介绍第三种方法--实现Callable接口. 先说一下Runnable和C ...
- 【Android 异步操作】FutureTask 分析 ( Future 接口解析 | Runnable 接口解析 | Callable 接口解析 )
文章目录 一.Future 接口 1.Future 接口简介 2.取消任务方法 3.Future 接口源码注释 二.Callable 接口 三.Runnable 接口 上一篇博客 [Android 异 ...
- 5、JUC--实现 Callable 接口
Callable接口 Java 5.0 在 java.util.concurrent 提供了一个新的创建执行 线程的方式:Callable 接口 Callable 接口类似于 Runnable ...
- 【JUC并发编程07】Callable接口
文章目录 7 Callable接口 7.1 Callable接口创建线程 7.2 FutureTask 7 Callable接口 创建线程的多种方式: 继承Thread类 实现Runnable接口 C ...
- java callable 详解_Java多线程详解(七)------Callable接口介绍
一.与runnable接口对比 1 创建新类MyThread实现runnable接口2 class MyThread implementsRunnable{3 @Override4 public vo ...
- java多线程 -- 创建线程的第三者方式 实现Callable接口
Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口 Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一 ...
- Callable接口
Runnable是执行工作的独立任务,但是它不返回任何值.如果希望任务在完成的同时能够返回一个值,可以通过实现Callable接口.在JDK5.0中引入的Callable接口是一种具有类型参数的泛型, ...
- 【Java】线程创建方式:Callable接口 / 使用线程池
面试题:创建多线程有有哪几种方式? 回答:4种. 实现Runnable接口(重写Run方法) 继承Thread类 实现Callable接口(重写Call方法,与Run不同的是,Call方法有返回值) ...
最新文章
- AEAI WM v1.6.0 升级说明,开源工作管理系统
- 关于在Webservice里使用LinqToSQL遇到一对多关系的父子表中子表需要ToList输出泛型而产生循环引用错误的解决办法!(转)...
- E-UTRA channel bandwidths per operating band (36.101)
- 概要设计 重要性_儿童户外游乐场应如何设计-户外游乐设备厂家【经验分享】...
- HDD与OS的江湖恩怨
- 端口停止使用_我停止使用
- JSP PO VO BO DTO POJO DAO解释
- 「PKUWC2018」Slay the Spire
- 画出的点做交互_设计之下交互设计原型设计之概念设计
- 第三课 SVM(2)
- phpmyadmin登陆错误:The requested URL /phpmyadmin was not found on this serve
- js获取验证码倒计时60s(超简单)
- PHP面试常考内容之面向对象(3) 1
- configure:3855: gcc -V 5 gcc: error: unrecognized command line option '-V'
- 2018年四大爬虫代理IP提供商对比
- Java:详解List集合的排序功能
- AotucCrawler 快速爬取美女图片
- 高级计量经济学及stata应用_推荐使用的计量经济学教材
- 国瀚实业|怎么才能做好互联网投资理财
- 【Java】1、Java 基础入门