JDK1.5 returnvalue实例
编程技术  /  houtizong 发布于 3年前   100
Callable接口:
返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。
Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。
ExecutorService接口方法:
<T> Future<T> submit(Callable<T> task)
提交一个返回值的任务用于执行,返回一个表示任务的未决结果的 Future。
如果想立即阻塞任务的等待,则可以使用 result = exec.submit(aCallable).get(); 形式的构造。
注:Executors类包括了一组方法,可以转换某些其他常见的类似于闭包的对象,例如,将 PrivilegedAction 转换为 Callable 形式,这样就可以提交它们了。
实例:
package com.bijian.thread;import java.util.concurrent.Callable;public class MyCallable implements Callable {private String oid;MyCallable(String oid) {this.oid = oid;}@Overridepublic Object call() throws Exception {return oid + "任务返回的内容";}}
package com.bijian.thread;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class Main {/** * @param args */public static void main(String[] args) throws ExecutionException,InterruptedException {// 创建一个线程池ExecutorService pool = Executors.newFixedThreadPool(2);// 创建两个有返回值的任务Callable c1 = new MyCallable("A");Callable c2 = new MyCallable("B");// 执行任务并获取Future 对象Future f1 = pool.submit(c1);Future f2 = pool.submit(c2);// 从Future 对象上获取任务的返回值,并输出到控制台System.out.println(">>>" + f1.get().toString());System.out.println(">>>" + f2.get().toString());// 关闭线程池pool.shutdown();}}
运行结果:
>>>A任务返回的内容>>>B任务返回的内容
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接