与实现Runable接口相比,Callable功能更强大

1.与run()方法相比,call()方法可以有返回值

2.call()方法可以抛出异常

3.call()方法支持泛型的返回值

4.call()方法的返回值以及线程的调用需要借助于FutureTask类来实现

5.FutureTask的run方法是线程安全的,使用的是CAS机制

示例代码:

package com.debuggg.exer;

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

class NumThread implements Callable {

    @Override    public Object call() throws Exception {        int sum = 0;        for (int i = 0; i < 100; i++) {            if(i % 2 == 0){                sum += i;                System.out.println(i);            }        }        return sum;    }}

public class CallableTest {    public static void main(String[] args) {        NumThread numThread = new NumThread();

        FutureTask futureTask = new FutureTask(numThread);

        Thread thread = new Thread(futureTask);        thread.start();

        try {            int num = (int)futureTask.get();            System.out.println(num);        } catch (InterruptedException e) {            e.printStackTrace();        } catch (ExecutionException e) {            e.printStackTrace();        }

    }}

多线程的创建方式之实现Callable接口相关推荐

  1. 线程创建方式3-实现 callable接口(Java)

    线程创建方式3-实现 callable接口(Java) 线程创建方式三:实现 callable接口 callable的好处: 1.可以定返回值 2.可以抛出异常 package src.Demo02; ...

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

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

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

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

  4. 一篇文章认识4种Java多线程的创建方式

    Java4种多线程的创建: 什么是程序? 什么是进程? 什么是线程? 并行与并发: 那么JAVA多线程实现方式: (1)继承Thread类实现多线程: (2)实现Runnable接口方式实现多线程: ...

  5. 多线程的创建方式和解决线程安全问题

    一  基本概念 ①程序(program)是为完成特定任务.用某种语言编写的一组指令的集合.即指一 段静态的代码,静态对象. ②进程(process)是程序的一次执行过程,或是正在运行的一个程序.是一个 ...

  6. (面经总结)一篇文章带你整理面试过程中关于Java 中多线程的创建方式的最全整理

    文章目录 一.Java线程的创建方式 二.继承Thread类 三.实现 Runnable 接口 四.通过ExecutorService和`Callable`实现有返回值的线程 五.基于线程池 六.面试 ...

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

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

  8. java中多线程的创建方式一:

    //多线程的创建: //方式一:继承于Thread类的方式进行创建 //1.创建一个继承Thread类的子类 //2.重写Thread类中的run()方法–>将此线程执行的操作写在run方法中 ...

  9. 多线程的创建方式 你会优先选择哪一种_Python多线程入门到放弃

    在生产者消费者的中, 我们经常会遇到任务调度的情况, 这时候常用的解决方案就是使用多线程来解决相关的调度问题. 多线程扩展了多进程的概念,使得同一个进程可以同时并发处理多个任务. 线程(Thread) ...

最新文章

  1. 她琴棋书画全能,还进入清华计算机系实验室,被赞智商太超群、能力过强悍...
  2. RFID自动识别术语解释(zt)
  3. android自定义控件 几种方式总结
  4. function module COM_PRODUCT_GETDETAIL_INTERNAL的内存分配问题
  5. Javascript----input事件实现动态监听textarea内容变化
  6. 使用yaml文件创建deployment来部署一个应用程序到k8s集群
  7. cd40系列芯片_CD40系列74系列芯片
  8. 3.7V转12V2A 15V2A 大功率升压芯片 拉杆音响专用升压芯片
  9. What is Dymola?---Dymola的特点和架构
  10. 如何查看AT24C02设备地址
  11. 并联串联混合的电压和电流_并联电阻的计算公式(附各种并联电阻网络图解)...
  12. oracle查询怎样更效率,Oracle提高查询效率的方法
  13. word中如何插入参考文献
  14. 16秋计算机JAVA第一节课作业(钟永钜)
  15. unix时间戳 为什么计算机时间要从1970年1月1日开始算起?
  16. 不用Home Assistant让小米智能家居接入HomeKit
  17. java中级程序员全面学习路线教程
  18. Python 获取 网易云音乐热门评论
  19. Docker--10张图带你深入理解Docker容器和镜像
  20. centos 安装gstreamer_64位CentOS系统中安装32位开发库

热门文章

  1. Java连接字符(concat)
  2. 怎么烧录c语言_单的入门1 -- C语言 : 一门和芯片对话的外语
  3. 阿里云专有网络环境下不同账号之间内网互通(内网高速通道)
  4. Linux rescue救援(光盘修复)模式详解
  5. Java基础学习总结(140)——Java8 Stream之Stream流创建的几种方式
  6. Linux学习总结(42)——Linux之Bash脚本入门学习
  7. Linux学习总结(18)——Linux使用init命令关机、重启、切换模式
  8. Spring学习总结(16)——Spring AOP实现执行数据库操作前根据业务来动态切换数据源
  9. oracle创建表不在对应表空间,oracle创建表空间
  10. 手机上网有几种方式?