Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口
Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常
Callable 需要依赖FutureTask ,FutureTask 也可以用作闭锁。

例子:

package com.company;import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;/*** Created by MSI1 on 2017/3/30.*/
public class TestCallableDemo {public static void main(String[] args) {try {DemoThread demoThread = new DemoThread();FutureTask<Integer> integerFutureTask = new FutureTask<>(demoThread);new Thread(integerFutureTask).start();Integer result = integerFutureTask.get();System.out.println("result = " + result);} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}}
}class DemoThread implements Callable<Integer> {@Overridepublic Integer call() throws Exception {int sum = 0;for (int i = 0; i <= 100; i++) {sum = sum + i;}return sum;}
}

結果:

result = 5050

java多线程 -- 创建线程的第三者方式 实现Callable接口相关推荐

  1. java 创建线程_java多线程|创建线程的各种方式

    javaDEMO 本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https: ...

  2. 教你学Java | 带你学习Java多线程(续:创建线程的其他方式与activeCount方法的浅谈)

    前言 相信每一位程序猿对"多线程"这个概念应该都不陌生,无论是在开发还是面试的时候,都会遇到多线程的问题.不过,一定有很多小伙伴才刚刚接触到多线程,那么在此就由小弟为各位小伙伴细细 ...

  3. Java中创建线程的三种方式

    Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)继承Thread类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. ...

  4. C++多线程:thread类创建线程的多种方式

    文章目录 描述 函数成员简介 总结 描述 头文件 <thread> 声明方式:std::thread <obj> 简介 线程在构造关联的线程对象时立即开始执行,从提供给作为构造 ...

  5. java多线程方式轮询,深入理解JAVA多线程之线程间的通信方式

    一,介绍 本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码. 二,线程间的通信方式 ①同步 这里讲的同步是指多个线程通过sy ...

  6. 在java中创建线程有几种办法_Java中创建线程的几种主流方式

    继承Thread类 继承Thread类,并重写它的run方法,就可以创建一个线程了,当然线程是如何真正被启动,可以参考我之前的 为什么start方法才能启动线程,而run不行? class Think ...

  7. Java创建线程池的方式

    Java创建线程池的方式 文章目录 Java创建线程池的方式 一.通过Executors工厂方法创建 1.Executors.newSingleThreadExecutor() 2.Executors ...

  8. Java多线程02(线程安全、线程同步、等待唤醒机制)

    Java多线程2(线程安全.线程同步.等待唤醒机制.单例设计模式) 1.线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量 ...

  9. Java多线程之线程池详解

    Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...

最新文章

  1. delphi mysql dll直接_十万火急!!!那位高手用过libmysql.dll直接连接MySql数据库?如何将二进制文件保存到blob字段中? (60分)...
  2. 只让输入数字、字母、中文的输入框
  3. WPF中的鼠标事件详解
  4. Spring Boot—07应用application.properties中的配置
  5. 今天的不一会儿的飞鸽传书
  6. wdcp 开启某个Mysql数据库远程访问
  7. 《SpringBoot实战》笔记3
  8. debian编译openjdk8
  9. WPS入门StackPanel与Grid
  10. 基于FPGA的YCbCr颜色空间中颜色参数的变化
  11. 知识分享之Golang——在Golang中unicode码和中文的互相转换函数
  12. 什么是IPFS?(三)
  13. feedburner怎么用_在FeedSky和FeedBurner中无缝切换
  14. FSMC驱动TFT显示屏(和驱动触摸屏)
  15. 联邦贸易委员会:大数据带来的歧视风险
  16. 浙江大学计算机保研条件_2020年计算机系保研推免记录(浙江大学软件学院)...
  17. 【STL】11 list容器操作
  18. 1. MyBatis框架介绍
  19. python如何将数组里的数提取出来_python [:3] 实现提取数组中的数
  20. Mac安装brew 及安装报错的解决办法【已解决】

热门文章

  1. 信息北航身份认证_信息北航丨北航第一服务平台,你值得关注!
  2. exe一机一码加密工具_文件夹加密软件有哪些作用?
  3. 装linux系统时键盘用不了怎么办_图吧垃圾佬的LINUX体验
  4. 机器人学习--室内定位的通信学科背景方法
  5. mac下用vs code编写c++程序
  6. Unable to compile class for JSP的解决方法
  7. mysql完整字段包括_MySQL字段类型最全解析
  8. 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
  9. java在src创建entity文件_java自动生成entity文件
  10. C++ 标准库类型 stack