在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.现在Java终于有可返回值的任务(也可以叫做线程)了. 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口. 执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了. 下面是个很简单的例子: package com.lyc import java.util.co…
在创建多线程程序的时候,我们常实现Runnable接口,Runnable没有返回值,要想获得返回值,Java5提供了一个新的接口Callable,可以获取线程中的返回值,但是获取线程的返回值的时候,需要注意,我们的方法是异步的,获取返回值的时候,线程任务不一定有返回值,所以,需要判断线程是否结束,才能够去取值. 测试代码 package com.wuwii.test; import java.util.concurrent.*; /** * @author Zhang Kai * @versio…
http://lavasoft.blog.51cto.com/62575/222082/ Java线程:新特征-有返回值的线程 2009-11-04 17:33:56 标签:返回值 职场 线程 休闲 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/222082 Java线程:新特征-有返回值的线程   在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周…
  原始文章   在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.   现在Java终于有可返回值的任务(也可以叫做线程)了.   可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口.   执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了.   下面是个很简单的例子:   import java.uti…
用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程 ThreadLocal在我的笔记"关于线程同步"的第5种方式里面有介绍,这里就不多说了. --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3899890.html  "谢谢-- Callable<V>接口类似于Runnable,两者都是为了哪些其实例可能被另一个线程执行的类设计的, 但是Runnable不会返回…
在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了. 现在Java终于有可返回值的任务(也可以叫做线程)了. 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口. 执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了. 下面是个很简单的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1…
Callable java5之前是没有返回值的,Java5新增了Callable接口获得线程的返回值,可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口.Callable的call方法可以根据你传入的泛型参数返回对应类型的数据.执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了. 示例: package thread_Callable; import java.util.co…
转自:JAVA 笔记 Callable 与 FutureTask:有返回值的多线程 常用的Thread类在run方法执行完之后是没有返回值的,要实现子线程完成任务后返回值给主线程需要借助第三方转存.Callable接口则提供了一种有返回值的多线程实现方法.下面以一个简单的地主.监工和长工的例子展示这种接口的用法. 长工类: 长工类实现了Callable接口,线程运行完成后返回一个Integer值. package com.lk.C; import java.util.concurrent.Cal…
在finally代码块中处理返回值,这是在面试题中经常出现的题目.但是在项目中绝对不能再finally代码块中出现return语句,这是因为这种处理方式非常容易产生"误解",会严重误导开发者. public class Client { public static void main(String[] args) { try { doStuff(-1); doStuff(100); } catch (Exception e) { System.out.println("这里是…
/** * 获取Java VM中当前运行的所有线程 * @return */ public static Thread[] findAllThreads() { ThreadGroup group = Thread.currentThread().getThreadGroup(); ThreadGroup topGroup = group; // 遍历线程组树,获取根线程组 while (group != null) { topGroup = group; group = group.getPa…