Callable和Runable相比

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

package JUC;import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;/*** 多线程中第三种活动线程的方法*///Runnable和Callable区别
//1.Callable带返回值
//2.run()不会抛异常,call()会抛异常
//3.接口实现的接口不同//class MyThread implements Runnable{//    @Override
//    public void run() {//
//    }
//}
class MyThread2 implements Callable{@Overridepublic Integer call() throws Exception {System.out.println(Thread.currentThread().getName()+"\t come in callable");TimeUnit.SECONDS.sleep(3);return 1024;}
}
//适配器模式//并发异步导致callable出现,
public class CallableDemo {public static void main(String[] args) throws ExecutionException, InterruptedException {FutureTask<Integer> futureTask = new FutureTask<>(new MyThread2());FutureTask<Integer> futureTask1 = new FutureTask<>(new MyThread2());new Thread(futureTask,"AA").start();//new Thread(futureTask,"BB").start();//不会再进入callable,因为可以复用,所以没必要在进入一次,想多算就需要多启动futureTasknew Thread(futureTask1,"BB").start();int result1 = 100;//int result  = futureTask.get();//获得callable线程的结算结果,如果没有计算完成就要去强求,会导致堵塞,直到计算完成,// 如果现在去取futureTask.get()结果那么main线程就会堵塞,因为没计算完,所以放到最后会先让main线程执行,最后再去取callable线程结果int result = futureTask.get();System.out.println("*******result:"+(result+result1));}
}

Callable接口-创建线程的第三种方法相关推荐

  1. 创建线程的第三种方法-callable futureTask

    通过实现Callable接口来创建Thread线程:其中,Callable接口(也只有一个方法)定义如下: public interface Callable<V>   { V call( ...

  2. 创建线程的第三种方式:实现Callable接口(含部分源码解析)

    创建线程的第三种方式--实现Callable接口 package com.lqy.Multithreading; import java.util.concurrent.Callable; impor ...

  3. 创建线程的第三种方式---JDK8新特性

    创建线程的第三种方式-JDK8新特性 实现Callable接口,创建线程 Runnable和Callable接口的不同 1.Callable可以返回一个类型V,而Runnable不可以,也就是说Cal ...

  4. Java用Callable接口创建线程

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

  5. unix c线程同步的三种方法:互斥量、读写锁以及条件变-xhb8413-ChinaUnix博客

    unix c线程同步的三种方法:互斥量.读写锁以及条件变-xhb8413-ChinaUnix博客 unix c线程同步的三种方法:互斥量.读写锁以及条件变 2012-03-30 14:42:38 分类 ...

  6. JAVA中创建线程池的五种方法及比较

    之前写过JAVA中创建线程的三种方法及比较.这次来说说线程池. JAVA中创建线程池主要有两类方法,一类是通过Executors工厂类提供的方法,该类提供了4种不同的线程池可供使用.另一类是通过Thr ...

  7. 创建字符设备的三种方法

    将创建字符设备的三种方法记录一下,以便以后参考. 1. 使用早期的register_chardev()方法 #include<linux/kernel.h> #include<lin ...

  8. eclipse创建springboot项目的三种方法

    eclipse创建springboot项目的三种方法 方法一 安装STS插件 安装插件导向窗口完成后,在eclipse右下角将会出现安装插件的进度,等插件安装完成后重启eclipse生效 新建spri ...

  9. matlab创建三维数组的三种方法

    在Matlab中习惯性的会将二维数组中的第一维称为"行"第二维称为"列",而对于三维数组的第三位则是习惯性的称为"页".在Matlab中将三 ...

最新文章

  1. C++ 自己重写Vector
  2. 深入理解C指针之三:指针和函数
  3. Linux下kafka的部署
  4. 洛谷P2483 Bzoj1975 [SDOI2010]魔法猪学院
  5. 学位论文是根,学术论文是叶
  6. 小程序素材抓取_到底要不要做百度小程序
  7. 列出访问ftp 文件传输服务器过程,FTP文件传输协议简介及命令描述
  8. 五十九、备战蓝桥杯 - Java算法 (基础练习一)
  9. 华为手机怎样关闭鸿蒙系统,华为手机怎么升级鸿蒙系统-华为手机升级成鸿蒙系统教程汇总...
  10. serializer嵌套序列化
  11. 亿佰特Wifi模块、蓝牙模块和Zigbee模块协议在物联网智能家居上的应用指南
  12. 见信如晤::‘卷福’读信:我全心全意去拥抱您
  13. 学计算机西电和中南,放弃中南大学等985高校,去南航、西电的强势专业到底值不值得呢?...
  14. 03. isasupperclass
  15. 大型直播平台应用架构浅谈
  16. 杭州地区IT公司招聘分析与求职建议
  17. 烟波流传,繁花三千,倾听似水流年
  18. 来点色看看~SecureCRT-8.5配色方案设置
  19. vue-router.esm-bundler.js6c0271 [Vue Router warn] No match found for location with path
  20. 怎样使用晨曦记账本,管理收入支出

热门文章

  1. 安装zabbix及LNMP的平台的搭建
  2. shell总结(0基础入门)
  3. 【iOS】Quartz2D图片剪切
  4. 计算机科学与导论期末论文,计算机科学与导论论文3
  5. 上海大学c语言作业答案,《上海大学C语言选择题》.doc
  6. PHP程序中时间戳,php 时间戳常用代码
  7. 1470A. Strange Birthday Party
  8. Codeforces Round #734 (Div. 3) (A-D1)
  9. java web scala_spring boot+scala编写web接口
  10. liberty配置mysql数据源_Bluemix Liberty server.xml MySQL数据源配置