有返回值的多线程demo
package com.jimmy.demo.util; import java.util.HashMap;import java.util.concurrent.*;import java.util.Date;import java.util.List;import java.util.ArrayList; /** * 有返回值的线程 */@SuppressWarnings("unchecked")public class Test { public static void main(String[] args) throws ExecutionException, InterruptedException { System.out.println("----程序开始运行----"); Date date1 = new Date(); int taskSize = 1; // 创建一个线程池 ExecutorService pool = Executors.newFixedThreadPool(1); // 创建多个有返回值的任务 List<Future> list = new ArrayList<Future>(); for (int i = 0; i < taskSize; i++) { Callable c = new MyCallable(i + " "); // 执行任务并获取Future对象 Future f = pool.submit(c); System.out.println(">>>" + f.get().toString()); list.add(f); } // 关闭线程池 pool.shutdown(); // 获取所有并发任务的运行结果 for (Future f : list) { // 从Future对象上获取任务的返回值,并输出到控制台 System.out.println(">>>" + f.get().toString()); } Date date2 = new Date(); System.out.println("----程序结束运行----,程序运行时间【" + (date2.getTime() - date1.getTime()) + "毫秒】"); }} class MyCallable implements Callable<Object> { private String taskNum; MyCallable(String taskNum) { this.taskNum = taskNum; } public Object call() throws Exception { System.out.println(">>>" + taskNum + "任务启动"); Date dateTmp1 = new Date();// Thread.sleep(1000); Date dateTmp2 = new Date(); long time = dateTmp2.getTime() - dateTmp1.getTime(); System.out.println(">>>" + taskNum + "任务终止"); return taskNum + "=====" + Thread.currentThread().getName() + "任务返回运行结果,当前任务时间【" + time + "毫秒】"; } }
----程序开始运行----
>>>0 任务启动
>>>0 任务终止
>>>0 =====pool-1-thread-1任务返回运行结果,当前任务时间【0毫秒】
>>>0 =====pool-1-thread-1任务返回运行结果,当前任务时间【0毫秒】
----程序结束运行----,程序运行时间【8毫秒】
转载于:https://www.cnblogs.com/jimmy-muyuan/p/6013611.html
有返回值的多线程demo相关推荐
- 获取python脚本的返回值_Python多线程获取返回值代码实例
这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值 ...
- java 多线程 返回值_JAVA多线程实现和应用总结:如何使用有返回值的多线程
最近在做代码优化时学习和研究了下JAVA多线程的使用,看了菜鸟们的见解后做了下总结. 1.JAVA多线程实现方式 JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用E ...
- 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...
微信公众号:Zhongger 我是Zhongger,一个在互联网行业摸鱼写代码的打工人! 关注我,了解更多你不知道的[Java后端]打工技巧.职场经验等- 上一期,讲到了关于线程死锁.用户进程.用户线 ...
- BeginInvoke与EndInvoke方法解决多线程接收委托返回值问题
BeginInvoke与EndInvoke方法解决多线程接收委托返回值问题 参考文章: (1)BeginInvoke与EndInvoke方法解决多线程接收委托返回值问题 (2)https://www. ...
- java多线程测试框架(含入参和返回值)
最近要对一个webservice接口做测试,需测试高并发接口是否会以异常数据返回,编写了如下demo,有类似需求的可以参考下. 注意事项: 1,线程使用了callable接口形式,call相对runa ...
- python 多线程 线程如何获得返回值 (重写threading.Thread类)
重写threading.Thread类: # -*- coding: utf-8 -*- """ @File : dontla_ThreadClass.py @Time ...
- C#多线程函数如何传参数和返回值
提起多线程,不得不提起 委托(delegates)这个概念. 我理解的委托就是 具有 同样参数和返回值 的函数的集合. 比如 public delegate void MyDelegate(int a ...
- python多线程返回值_python获取多线程及子线程的返回值
最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装 import threading class MyThread(threadi ...
- ajax返回值demo
ajax返回值demo posted on 2016-01-29 15:22 Stanley_yu 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/ ...
最新文章
- av_read_frame 阻塞卡死解决办法
- 代码签名证书Authenticode签名伪造——PE文件的签名伪造与签名验证劫持
- 【深度学习】Ivy 开源框架,深度学习大一统时代到来?
- 字符串逆序的几种方法
- 远控免杀专题2---msfvenom的隐藏参数
- distenct oracle_Oracle的distinct关键字
- SQL Server2012新特性
- spring DI的三种注入方式分析
- imx6 linux 开发环境,米尔iMX6UL开发板Linux操作系统的环境部署
- Kafka CPU使用率高排查思路及解决方案
- 键盘定位板图纸_聊聊机械键盘的结构。
- 手机屏幕尺寸、分辨率,图像像素、分辨率、实际大小解惑
- AppScan的许可证
- 我参加NVIDIA Sky Hackathon(语音识别模型训练)
- c语言设计奥运奖牌管理系统,求一个用C语言编程的奥运奖牌管理系统
- Microsoft Graph PowerShell v2 发布公开预览版 - 一半的大小,加速的自动化体验
- ubuntu无法ping www.baidu.com问题
- python中怎么表示阶乘_python阶乘怎么写
- SpringBoot入门建站全系列(二十七)WebSocket做简单的聊天室
- 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第五集
热门文章
- JVM统介——Java虚拟机架构
- python 图片上传到minio时,在minio不是显示图片格式
- JVM_02 类加载器子系统
- STM32开发 -- VS2017错误
- LIVE555再学习 -- testH264VideoStreamer 源码分析
- c语言怎么在编码时改变颜色,怎么给贪吃蛇换一个颜色 怎么改 代码如下
- (原创)Android6.0亮屏流程分析
- JZOJ 3852. 【NOIP2014八校联考第2场第2试9.28】单词接龙(words)
- 音乐咖android,GitHub - hackers365/musicafe: musicafe音乐咖 — 网易、虾米、QQ音乐一处搞定...
- ACM竞赛学习整理--模拟算法举例POJ1068