`
dacoolbaby
  • 浏览: 1256186 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[多线程]--带返回值的线程

    博客分类:
  • Java
 
阅读更多

今天复习Thinking in Java的带返回值的线程。

 

 

public class ThreadWithReturn {
    //Runnable接口是执行工作的独立任务,但是它不反悔任何值。
    //如果你希望你的任务在完成时能够返回一个值,那么可以实现Callable接口
    //实现Callable接口
    class TaskWithResult implements Callable<String>{
	private int id;
	public TaskWithResult(int id){
	    this.id = id;
	}
	@Override
	public String call() throws Exception {
	    return "result of TaskWithResult" + id;
	}
    }
    
    public static void main(String[] args) {
	ThreadWithReturn twr = new ThreadWithReturn();
	//并且必须使用ExecutorService.submit()方法调用
	ExecutorService exec = Executors.newCachedThreadPool();
	List<Future<String>> results = new ArrayList<Future<String>>();
	
	for(int i=0;i<10;i++){
	   results.add(exec.submit(twr.new TaskWithResult(i)));  
	}
	
	for(Future<String> fs :results){
	    try{
	    //阻塞直到完成
		System.out.println(fs.get());
	    } catch (InterruptedException e) {
		e.printStackTrace();
		return;
	    }catch(ExecutionException e){
		e.printStackTrace();
		return;
	    }
	    finally{
		exec.shutdown();
	    }
	}
	//submit方法会产生Future对象,它用Callable返回特定类型进行了参数优化。
	//可以使用isDone()方法来查询Future是否已经完成。
	//当任务完成时,你可以调用get()方法获取结果值。
	//如果不判定isDone()就直接调用get()方法,get()将会发生阻塞。
    }

}

 

分享到:
评论

相关推荐

    Java多线程编程总结

    Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-锁(下) Java线程:新特征-信号量 Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程...

    java多线程编程总结

    详细的讲述了多线程的各种用法 Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠...

    Future执行具有返回值的线程.txt

    大家都知道实现多线程的2种方式,今天来讲讲Future实现具有返回值的线程。应用场景:前端调用时无需等待线程结束返回,线程结束后需进行其它操作如更新状态、通知kafuka等。

    C++多线程获取返回值方法详解

    主要介绍了C++多线程获取返回值方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    C#多线程委托带参数

    *********************************************************...两个线程,利用委托更新主线程listBox1控件的内容,并将线程的名字传递过去 ***********************************************************************

    Python多线程获取返回值代码实例

    这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值进行其他...

    Linux多线程编程-线程函数返回值(返回复杂数据类型)

    通过几个实验练习,学习线程之间连接的具体实现。下面列举了两个例子,一个是子线程返回简单数据类型;另一个是子线程返回复杂数据类型。 实现代码 子线程返回复杂数据类型 #include #include #include #include ...

    python获取多线程及子线程的返回值

    最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装 import threading class MyThread(threading.Thread): def __init__(self,func,args=()): super...

    多线程,Delegate 委托带参数的方法

    Delegate '委托,带参数的方法,多线程,可以轻松在线程中传递参数,获取返回值.

    多线程机制

    多线程机制 1 1、 Runnable接口与Thread类 1 2、 两个创建线程方法的比较 3 3、 几个常用的改变线程状态的方法 3 4、 线程的同步机制 8 5、 死锁 11 6、 线程间通信,也叫生产者与消费者问题 15 7、 浅析 Java ...

    C#多线程函数如何传参数和返回值[归类].pdf

    C#多线程函数如何传参数和返回值[归类].pdf

    C++11获取线程返回值的实现代码

    但是在C++11 多线程中我们注意到,std::thread对象会忽略顶层函数的返回值。 那问题来了,我们要怎么获得线程的返回值呢? 我们通过一个例子来说明如何实现这个需求。 假设我们的app会创建一个线程来压缩一个文件夹...

    可用于VC++的多线程编程

    可用于VC++的多线程编程,可用于VC++的多线程编程

    c++多线程的创建挂起执行与销毁

    否者就失去了多线程的意义) DWORD WINAPI ThreadFun(LPVOID pthread) //线程入口函数 { lpthread temp=(lpthread)pthread;//参数强制转换为结构体类型 temp-&gt;progress-&gt;SetPos(temp-&gt;pos); //设置被传递过来的...

    python多线程批量访问url脚本

    python多线程批量访问url脚本;使用grequests多线程访问,结果写入excel和txt都有,详细注释

    java多线程返回值使用示例(callable与futuretask)

    主要介绍了多线程返回值使用示例(callable与futuretask),需要的朋友可以参考下

    C_多线程函数如何传参数和返回值[文].pdf

    C_多线程函数如何传参数和返回值[文].pdf

Global site tag (gtag.js) - Google Analytics