java多线程 -- 创建线程的第三者方式 实现Callable接口
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接口相关推荐
- java 创建线程_java多线程|创建线程的各种方式
javaDEMO 本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https: ...
- 教你学Java | 带你学习Java多线程(续:创建线程的其他方式与activeCount方法的浅谈)
前言 相信每一位程序猿对"多线程"这个概念应该都不陌生,无论是在开发还是面试的时候,都会遇到多线程的问题.不过,一定有很多小伙伴才刚刚接触到多线程,那么在此就由小弟为各位小伙伴细细 ...
- Java中创建线程的三种方式
Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)继承Thread类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. ...
- C++多线程:thread类创建线程的多种方式
文章目录 描述 函数成员简介 总结 描述 头文件 <thread> 声明方式:std::thread <obj> 简介 线程在构造关联的线程对象时立即开始执行,从提供给作为构造 ...
- java多线程方式轮询,深入理解JAVA多线程之线程间的通信方式
一,介绍 本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码. 二,线程间的通信方式 ①同步 这里讲的同步是指多个线程通过sy ...
- 在java中创建线程有几种办法_Java中创建线程的几种主流方式
继承Thread类 继承Thread类,并重写它的run方法,就可以创建一个线程了,当然线程是如何真正被启动,可以参考我之前的 为什么start方法才能启动线程,而run不行? class Think ...
- Java创建线程池的方式
Java创建线程池的方式 文章目录 Java创建线程池的方式 一.通过Executors工厂方法创建 1.Executors.newSingleThreadExecutor() 2.Executors ...
- Java多线程02(线程安全、线程同步、等待唤醒机制)
Java多线程2(线程安全.线程同步.等待唤醒机制.单例设计模式) 1.线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量 ...
- Java多线程之线程池详解
Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...
最新文章
- delphi mysql dll直接_十万火急!!!那位高手用过libmysql.dll直接连接MySql数据库?如何将二进制文件保存到blob字段中? (60分)...
- 只让输入数字、字母、中文的输入框
- WPF中的鼠标事件详解
- Spring Boot—07应用application.properties中的配置
- 今天的不一会儿的飞鸽传书
- wdcp 开启某个Mysql数据库远程访问
- 《SpringBoot实战》笔记3
- debian编译openjdk8
- WPS入门StackPanel与Grid
- 基于FPGA的YCbCr颜色空间中颜色参数的变化
- 知识分享之Golang——在Golang中unicode码和中文的互相转换函数
- 什么是IPFS?(三)
- feedburner怎么用_在FeedSky和FeedBurner中无缝切换
- FSMC驱动TFT显示屏(和驱动触摸屏)
- 联邦贸易委员会:大数据带来的歧视风险
- 浙江大学计算机保研条件_2020年计算机系保研推免记录(浙江大学软件学院)...
- 【STL】11 list容器操作
- 1. MyBatis框架介绍
- python如何将数组里的数提取出来_python [:3] 实现提取数组中的数
- Mac安装brew 及安装报错的解决办法【已解决】
热门文章
- 信息北航身份认证_信息北航丨北航第一服务平台,你值得关注!
- exe一机一码加密工具_文件夹加密软件有哪些作用?
- 装linux系统时键盘用不了怎么办_图吧垃圾佬的LINUX体验
- 机器人学习--室内定位的通信学科背景方法
- mac下用vs code编写c++程序
- Unable to compile class for JSP的解决方法
- mysql完整字段包括_MySQL字段类型最全解析
- 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
- java在src创建entity文件_java自动生成entity文件
- C++ 标准库类型 stack