`

线程从任务中产生返回值

 
阅读更多

1,实现Callabale<V>接口而不是Runnable接口。

2, 在call方法中返回需要的信息。

3.使用ExecutorService.submit调用,返回值是Future<V>。

4.通过get获得结果,也可以使用isDone进行检测;否则get可能阻塞直到有结果准备就绪。

看个例子:

package com.wjy.multithread;

import java.util.concurrent.Callable;

public class MyCallable implements Callable<String>{
	private int id;
	public MyCallable(int id){
		this.id=id;
	}
	@Override
	public String call() throws Exception {
		// TODO Auto-generated method stub
		return "id: "+id;
	}

}

 

测试代码:

ExecutorService exec=Executors.newCachedThreadPool();
		Future<String> str=exec.submit(new MyCallable(66));
		
		try {
			System.out.println("result: "+str.get());
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ExecutionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			exec.shutdown();
		}

 运行结果:

result: id: 66

 

分享到:
评论

相关推荐

    python多线程DAY01.txt

    3.多任务编程 * 并行 和 并发 * 进程 线程 4. 多进程编程 时间片 PCB PID 父子进程 优先级 进程特征 进程状态: 就绪态 运行态 等待态 5. ps -aux ps -ajx pstree top nice 6. os.fork() 7. os.getpid() os....

    asynchronous:Rust 中使用线程的异步承诺

    Promise 是表示返回值或函数产生的错误的结构。 它还允许延迟执行并行或串行任务,将结果加入 Promise。 它包括管理事件循环的方法,其中有在后台“发出”事件的任务,它们由承诺收集。 该项目基于 Node JS 和的...

    C/C++笔试题(附答案,华为面试题系列)

    高调度效率和限制资源使用的好处,线程池中的线程达到最大数时,其他线程就会排队 等候。 15函数模板与类模板有什么区别? 答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化 必须由...

    java,c/c++,php,c#安全编码规范

    2.2.1 不可忽略方法的返回值 16 2.2.2 不要引用空指针 16 2.2.3 使用Arrays.equals()来比较数组的内容 16 2.3 数字类型和操作 17 2.3.1 防止整数溢出 17 2.3.2 避免除法和取模运算分母为零 18 2.4 类和方法操作 18...

    window32 API大全 win32编程

    对话框中可包括用于输入正文、滚动正文、从列表中选择列表项等操作的控制。对话框管理和处理来自这些控制的输入,使应用程序可使用这些信息,来完成所要求的命令操作。 通过使用"资源"可以共享很多有用的数据,比如...

    精易模块[源码] V5.15

    1、新增“线程_枚举”枚举指定进程ID中所有线程列表,成功返回线程数量,失败返回零。 2、删除“文件_取图标”与"文件_取图标句柄"功能重复。 3、优化“系统_创建桌面快捷方式”流程代码,感谢易友[ds9660]反馈。 4...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    VC++6.0核心编程源码.rar

    你可以看到,每个错误都有3种表示法:即一个消息ID(这是你可以在源代码中使用的一个宏,以便与GetLastError的返回值进行比较),消息文本(对错误的英文描述)和一个号码(你应该避免使用这个号码,而应该使用消息...

    Spring.3.x企业应用开发实战(完整版).part2

    此外,本书重点突出了“实战性”的主题,力求使全书“从实际项目中来,到实际项目中去”。 目录 第1篇 概述 第1章 Spring概述 1.1 认识Spring 1.2 关于SpringSource 1.3 Spring带给我们什么 1.4 Spring体系结构 1.5 ...

    Spring3.x企业应用开发实战(完整版) part1

    此外,本书重点突出了“实战性”的主题,力求使全书“从实际项目中来,到实际项目中去”。 目录 第1篇 概述 第1章 Spring概述 1.1 认识Spring 1.2 关于SpringSource 1.3 Spring带给我们什么 1.4 Spring体系结构 1.5 ...

    易语言程序免安装版下载

     静态编译后的易语言EXE/DLL之间不能再共享譬如窗口、窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被分别...

    Java的六大问题你都懂了吗

    在多线程的操作中,一个对象会被多个线程共享或修改,一个线程对对象无意识的修改可能会导致另一个使用此对象的线程崩溃。一个错误的解决方法就是在此对象新建的时候把它声明为final,意图使得它"永远不变".其实那是...

    超爽的自学课件(java)

    &lt;br&gt;(14) 第14章:多线程 Java提供了一套内建的机制,可提供对多个并发子任务的支持,我们称其为“线程”。这线程均在单一的程序内运行。除非机器安装了多个处理器,否则这就是多个子任务的唯一运行方式。...

    C#微软培训资料

    18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...

    FFCH4J:FFCH4J项目全称:FFmpeg命令处理器(原用名FFmpegComandHandler4java,FFmpeg命令行运行管理器)。不仅仅只是跨平台的ffmpeg命令执行、停止、查询功能的处理器,还是跨平台的命令行操作处理器

    除了保证命令行运行,还拥有独立的轻量级的保活线程来重启因为异常故障导致中断的任务。 特性 零依赖(不依赖任何第三方jar包,只需要java运行环境即可运行),完全接口化(所有内部组件都实现了完全接口化,开发...

    windows 程序设计

    Windows 98和Windows NT都是支持32位优先权式多任务(preemptive multitasking)及多线程的图形操作系统。Windows拥有图形使用者接口(GUI ),这种使用者界面也称作「可视化接口」或「图形窗口环境」。有关GUI的概念...

    C#编程经验技巧宝典

    58 &lt;br&gt;0081 文本中首字母改为大写 59 &lt;br&gt;0082 C#随机数的产生 59 &lt;br&gt;0083 身份证从15位升至18位算法 60 &lt;br&gt;0084 十进制数转二进制数的算法 60 &lt;br&gt;0085 十进制数转八进制数的算法 61...

    PT80-NEAT开发指南v1.1

    NEAT 开 发 指南 文档 适用于 PT80 系列 移动数据终端 版本记录 版本号 版本描述 发布日期 V 1.0 初始版本。 2012-04-12 V1.1 修改前三章内容 2012-09-25 目录 第一章 关于本手册.....................................

Global site tag (gtag.js) - Google Analytics