`
dacoolbaby
  • 浏览: 1262589 次
  • 性别: 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()将会发生阻塞。
    }

}

 

分享到:
评论

相关推荐

    多线程-委托-回调实例.zip

    在C#编程中,多线程、委托和回调是三个重要的概念,它们在构建高性能、响应迅速的应用程序中起着至关重要的作用。本资源包"多线程-委托-回调实例.zip"似乎提供了一些示例代码,帮助学习者深入理解这些主题。 1. **...

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

    在C++多线程编程中,获取线程返回值是一个很重要的 topic。在C++11标准中,std::thread对象会忽略顶层函数的返回值,这就使得获取线程返回值变得困难。下面我们将详细介绍两种获取返回值的方法:传统方法和C++11方法...

    Java多线程-JDK5.0新增线程创建方式

    通过以上两个新增的线程创建方式,我们可以看到Java 5.0版本在多线程编程方面的改进和增强。使用`Callable`接口和线程池不仅提高了线程管理的灵活性,还增强了程序的可扩展性和性能表现。在实际开发过程中,根据具体...

    python使用threading获取线程函数返回值的实现方法

    在给定的描述中,作者面临的问题是如何在一个环境搭建工具中,通过多线程并行执行操作,并收集每个操作的返回值来判断所有操作是否成功。为了解决这个问题,作者创建了一个名为`MyThread`的类,这个类封装了多线程...

    vc中获取一个线程的状态及返回值

    5. **线程返回值**: - 线程函数可以通过`ExitThread()`函数设置线程的退出代码,这个值可以通过`GetExitCodeThread()`函数获取。 - 在VC++中,主线程可以通过`Joinable`线程类的`join()`成员函数等待子线程结束并...

    【IT十八掌徐培成】Java基础第09天-01.多线程-时间片-死锁演示.zip

    此外,Java还提供了Callable和Future接口,它们支持带返回值的多线程。 接着,我们讨论时间片调度。在多线程环境下,操作系统通常会采用时间片轮转的方式进行调度,即将CPU的执行时间分割成多个时间片,每个线程在...

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

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

    有返回值的线程

    同时,`jdbctest`可能涉及到了如何在多线程环境下使用JDBC,比如在一个线程中执行查询,然后在另一个线程中处理结果,这与我们的主题“有返回值的线程”相吻合。 总之,要实现有返回值的线程,我们可以使用Java的`...

    多线程编程-监控线程

    在多线程编程中,监控线程是一种重要的机制,它用于确保关键线程的持续运行。当一个进程中有多个线程协同工作时,有时需要确保某些线程始终保持活动状态,因为它们可能承载着如网络通信、数据处理等关键任务。如果...

    易语言线程返回数据的方法

    互斥量则用于保护数据,防止多线程并发访问时出现冲突。 四、线程返回数据的方法 1. **使用全局变量**:线程执行完毕后,可以修改全局变量,然后由主线程或其他线程读取。这种方式简单,但不适用于复杂的同步需求。...

    Java多线程编程总结

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

    C#多线程委托带参数

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

    linux多线程编程.pdf

    Linux多线程编程是现代操作系统编程的重要组成部分,尤其是在Linux环境下,多线程编程更是成为了高性能应用不可或缺的技术之一。本文档主要涉及Linux多线程编程的一些关键知识点,包括pthread线程库的使用、线程的...

    Linux下的多线程

    ### Linux下的C语言多线程知识点详解 #### 一、多线程概念及重要性 在探讨具体的编程细节之前,我们首先需要理解为什么在Linux环境下使用C语言进行多线程编程是如此的重要。 1. **多线程的概念:** - 多线程是指...

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

    这个`parse_detail_page`函数可以处理多个URL,每个URL都在一个独立的线程中处理,最后返回一个包含所有线程返回值的列表。 需要注意的是,使用`join()`方法是必要的,因为它确保主线程等待所有子线程结束,防止在...

    利用MFC进行多线程编程

    在Windows平台上进行应用程序开发时,Microsoft Foundation Class (MFC) 库提供了一种方便的方式来实现多线程编程。MFC是Microsoft为C++开发者设计的一个类库,它封装了Windows API,使得创建复杂的Windows应用程序...

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

    "C#多线程函数如何传参数和返回值" 在C#中,多线程函数的参数传递和返回值处理是非常重要的。多线程函数可以使用委托(delegates)来实现参数的传递和返回值的处理。 委托是具有同样参数和返回值的函数的集合。...

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

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

Global site tag (gtag.js) - Google Analytics