`
nowing
  • 浏览: 84800 次
  • 来自: ...
社区版块
存档分类
最新评论

Java线程:有返回值的线程

阅读更多
http://lavasoft.blog.51cto.com/62575/222082

现在Java终于有可返回值的任务(也可以叫做线程)了。

可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。

执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。

下面是个很简单的例子:

import java.util.concurrent.*;

/**
* Java线程:有返回值的线程
*
* @author Administrator 2009-11-5 0:41:50
*/
public class Test {
        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();
        }
}

class MyCallable implements Callable{
        private String oid;

        MyCallable(String oid) {
                this.oid = oid;
        }

        @Override
        public Object call() throws Exception {
                return oid+"任务返回的内容";
        }
}

>>>A任务返回的内容
>>>B任务返回的内容

Process finished with exit code 0
分享到:
评论

相关推荐

    Java多线程编程总结

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

    java线程详解

    Java线程:新特征-有返回值的线程 Java线程:新特征-锁(上) Java线程:新特征-阻塞队列 Java线程:新特征-阻塞栈 Java线程:新特征-条件变量 Java线程:新特征-原子量 Java线程:新特征-障碍器 Java线程:...

    Java多线程编程经验

    #### 十三、Java线程:新特征-有返回值的线程 Java 5 引入了 `java.util.concurrent` 包,提供了 `Callable` 和 `Future` 接口,允许线程执行后返回结果。 #### 十四、Java线程:新特征-锁(上) Java 5 还引入了...

    Java 线程开发讲座

    #### 十二、Java线程:新特征-有返回值的线程 - **Future接口**:使用`Future`接口可以获取异步计算的结果。 - **Callable接口**:配合`FutureTask`使用,实现有返回值的任务。 #### 十三、Java线程:新特征-锁 -...

    在Java 线程中返回值的用法

    NULL 博文链接:https://icgemu.iteye.com/blog/467848

    Java多线程

    #### 十三、Java线程:新特征-有返回值的线程 通过使用`Callable`接口和`FutureTask`类,Java线程可以返回结果。这种方式比传统使用`Thread`类更加灵活。 #### 十四、Java线程:新特征-锁(上) Java提供了一套...

    java多线程编程总结

    每个Java线程都有自己的调用栈,即使是未显式创建的线程也不例外。主线程是程序开始运行的地方,即从 `main()` 方法启动。一旦创建了一个新的线程,就会产生一个新的调用栈。 #### 二、Java线程:创建与启动 - **...

    Java_多线程编程线程:大总结

    - **有返回值的线程**:通过`Callable`和`Future`实现线程的返回值,提供了更灵活的异步编程模型。 - **锁**:高级锁机制如`ReentrantLock`,提供了比`synchronized`更灵活的锁定策略。 - **信号量**:控制对有限...

    JAVA多线程总结

    **七、Java线程的新特性** 1. **线程池**:`ExecutorService`管理线程,提高性能,避免资源浪费。 2. **有返回值的线程**:`Future`和`Callable`接口组合实现。 3. **锁**:`java.util.concurrent.locks`包提供了更...

    有返回值的线程

    总之,要实现有返回值的线程,我们可以使用Java的`Callable`接口和`Future`、`ExecutorService`等工具,这些机制允许我们在异步环境中获取任务执行的结果。对于`jdbctest`,可能包含的是使用JDBC进行数据库操作的多...

    JAVA多线程

    Java线程的调度遵循操作系统的线程调度策略,但可以通过设置线程优先级、调用`yield()`方法让出CPU使用权、使用`join()`方法等待其他线程完成等方式对线程的执行顺序进行一定程度的控制。守护线程(Daemon Thread)是...

    java线程实例 各种小Demo

    Java线程有五种状态:新建、可运行、运行、阻塞和终止。可以通过Thread类的getState()方法查看线程状态。线程的控制包括: - sleep():使当前线程进入休眠状态,指定时间后自动唤醒。 - join():让当前线程等待另一...

    java线程文档大全

    Java线程是多任务编程中的核心概念,它允许程序同时执行多个不同的任务,极大地提高了程序的效率和响应性。在Java中,线程是通过Java.lang.Thread类或实现Runnable接口来创建和管理的。这份“java线程文档大全”包含...

    Java多线程:AtomicIntegerArray 原子更新数组类.docx

    Java中的`AtomicIntegerArray`是`java.util.concurrent.atomic`包中的一个类,它提供了一种在多线程环境下原子性地更新整型数组元素的方法。这个类和其他两个类似类——`AtomicLongArray`(用于原子更新长整型数组)...

    使用Runnable模拟Callable接口实现线程有返回值

    大家都知道Runnable和Callable接口都可以作为其他线程执行的任务,但是Runnable接口的run方法没有返回值,而Callable接口的call方法有返回值,那么Callable接口是如何做到的呢?在此我给出一个Demo,看看通过...

    Java线程 学习

    ### Java线程学习知识点 #### 一、Java线程概览 - **定义与作用**:线程是在程序中独立且并发执行的路径。在Java中,线程被设计为语言的一部分,而不是作为操作系统的底层工具。每个Java程序至少包含一个主线程,在...

    JAVA2实用教程(第5版)课后习题电子版

    6. 多线程: - 线程的创建:通过实现Runnable接口或继承Thread类创建线程,理解并发编程的基本概念。 - 线程同步:synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口和ReentrantLock类用于...

    java多线程处理数据库数据

    然后,我们将数据库操作封装为`Callable`任务,因为`Callable`可以返回结果,适合于数据库操作这种有返回值的操作。 ```java public class DatabaseTask implements Callable<Void> { private Connection ...

    Java线程面试题Top50[参照].pdf

    * 有两种方式可以实现线程:继承 Thread 类或实现 Runnable 接口 * 通过继承 Thread 类或实现 Runnable 接口,可以让程序员使用多线程对运算密集型任务提速 四、用 Runnable 还是 Thread ? * 如果需要继承其他类...

Global site tag (gtag.js) - Google Analytics