`

Java有返回值的线程

 
阅读更多
    Java中可返回值的任务(线程)必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。

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

示例代码
package com.ajita;

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 TestCallable {
	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<Object> {
	private String oid;

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

	public Object call() throws Exception {
		return oid + "任务返回的内容";
	}
}
分享到:
评论

相关推荐

    java多线程编程总结

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

    在Java 线程中返回值的用法

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

    Java多线程编程总结

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

    Java 线程总结

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

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

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

    java线程详解

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

    java线程文档大全

    包含java线程的概念、原理、交互、合并、让步、守护、休眠、同步、锁以及新特性 锁 线程池 信号量 有返回值的线程 原子量 障碍器 阻塞列队和阻塞栈。java开发必备参考文档。

    java线程的run()没有返回值怎么办?

    java线程的run()没有返回值怎么办?本文给出了java线程的run()返回值为空的解决办法,感兴趣的小伙伴们可以参考一下

    JAVA SWING 多线程实现扫描同一个网段的IP,以及选定IP的端口

    从扫描同一个网段的IP开始 逐步添加功能 现在还具有了扫描选定IP的常见TCP UDP端口 包括部分常见木马所使用端口 并可以自定义扫描端口 扫描同一网段的IP主要是用SHELL方法 使用PING命令并判断返回值内容 从而确定...

    java线程学习笔记

    2.3 线程本地存储(Java.lang.ThreadLocal) 15 2.4 线程阻塞 17 2.4.1 调用sleep(millisecond)使任务进入休眠状态 17 2.4.2 等待输出与输入 17 2.4.3 对象锁不可用 17 2.4.4 通过wait()使线程挂起。 17 2.5 线程...

    多线程机制

    多线程机制 1 1、 Runnable接口与Thread类 1 2、 两个创建线程方法的比较 3 3、 几个常用的改变线程状态的方法 3 ...9、 Callable 有返回值的线程 20 10、 Callable结合FutureTask的多线程使用(免打扰模式) 24

    线程的创建与撤销

    (1)掌握Windows系统提供的线程创建与撤销系统调用 (2)掌握Windows系统环境下线程的创建与撤销方法 2 实验准备知识 (1)线程创建 CreateThread()完成线程的创建。它在调用进程的地址空间上创建一个线程,执行...

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

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

    线程超时死掉

    解决线程的死掉问题和超时问题特别好使,在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent...

    Java 实现多线程的几种方式汇总

    JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。

    java 多线程 服务端程序和客户端程序

    java的服务端程序(多线程)和客户端程序 Demo

    【java面试题】综合性经典Java面试题

    Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。 线程的概念 线程进程区别 在...

    JAVA SWING 多线程扫描局域网IP及端口 shellping v2

    扫描同一网段的IP主要是用SHELL方法 使用PING命令并判断返回值内容 从而确定服务器是否打开 扫描端口的原理是使用socket类判断是否连接成功 点击“目标IP段”标签,可以直接扫描自己主机IP(测试用功能) 需要...

Global site tag (gtag.js) - Google Analytics