今天复习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线程:线程的调度-休眠...
大家都知道实现多线程的2种方式,今天来讲讲Future实现具有返回值的线程。应用场景:前端调用时无需等待线程结束返回,线程结束后需进行其它操作如更新状态、通知kafuka等。
主要介绍了C++多线程获取返回值方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
*********************************************************...两个线程,利用委托更新主线程listBox1控件的内容,并将线程的名字传递过去 ***********************************************************************
这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值进行其他...
通过几个实验练习,学习线程之间连接的具体实现。下面列举了两个例子,一个是子线程返回简单数据类型;另一个是子线程返回复杂数据类型。 实现代码 子线程返回复杂数据类型 #include #include #include #include ...
最近有个需求,用多线程比较合适,但是我需要每个线程的返回值,这就需要我在threading.Thread的基础上进行封装 import threading class MyThread(threading.Thread): def __init__(self,func,args=()): super...
Delegate '委托,带参数的方法,多线程,可以轻松在线程中传递参数,获取返回值.
多线程机制 1 1、 Runnable接口与Thread类 1 2、 两个创建线程方法的比较 3 3、 几个常用的改变线程状态的方法 3 4、 线程的同步机制 8 5、 死锁 11 6、 线程间通信,也叫生产者与消费者问题 15 7、 浅析 Java ...
C#多线程函数如何传参数和返回值[归类].pdf
但是在C++11 多线程中我们注意到,std::thread对象会忽略顶层函数的返回值。 那问题来了,我们要怎么获得线程的返回值呢? 我们通过一个例子来说明如何实现这个需求。 假设我们的app会创建一个线程来压缩一个文件夹...
可用于VC++的多线程编程,可用于VC++的多线程编程
否者就失去了多线程的意义) DWORD WINAPI ThreadFun(LPVOID pthread) //线程入口函数 { lpthread temp=(lpthread)pthread;//参数强制转换为结构体类型 temp->progress->SetPos(temp->pos); //设置被传递过来的...
python多线程批量访问url脚本;使用grequests多线程访问,结果写入excel和txt都有,详细注释
主要介绍了多线程返回值使用示例(callable与futuretask),需要的朋友可以参考下
C_多线程函数如何传参数和返回值[文].pdf