当前位置:首页 > 开发 > 编程语言 > JDK JVM > 正文

JDK1.5 returnvalue实例

发表于: 2013-05-20   作者:bijian1013   来源:转载   浏览:
摘要: Callable接口: 返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。 Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。        ExecutorService接口方

Callable接口:

返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。

Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。

      

ExecutorService接口方法:

       <T> Future<T> submit(Callable<T> task)

提交一个返回值的任务用于执行,返回一个表示任务的未决结果的 Future

如果想立即阻塞任务的等待,则可以使用 result = exec.submit(aCallable).get(); 形式的构造。

注:Executors类包括了一组方法,可以转换某些其他常见的类似于闭包的对象,例如,将 PrivilegedAction 转换为 Callable 形式,这样就可以提交它们了。

 

实例:

package com.bijian.thread;

import java.util.concurrent.Callable;

public class MyCallable implements Callable {
	
	private String oid;
	
	MyCallable(String oid) {
		this.oid = oid;
	}

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

 

package com.bijian.thread;

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 Main {

	/**
	 * @param args
	 */
	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();
	}
}

 

运行结果:

 

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

JDK1.5 returnvalue实例

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
JDK1.5 Lock实例 Executors类主要方法: a. static ExecutorService newCachedThreadPool() 产生一
JDK1.5 Lock实例 Executors类主要方法: a. static ExecutorService newCachedThreadPool() 产生一
Executors类主要方法: a. static ExecutorService newCachedThreadPool() 产生一个ExecutorService
Executors类主要方法: a. static ExecutorService newCachedThreadPool() 产生一个ExecutorService
1 关于读写锁的一些特点: a) 读写锁是JVM自己控制的,我们只要上相应方法上加锁即可 b) 多个读锁共
不管是一个condition 两个condition 三个condition 都需要一个标志未来判定 案例1的 flag 案例2的 c
曾经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性
java5的java.util包提供了大量集合类。其中最常用的集合类有List、Set、Map等。这篇文章主要介绍其
线程 进程 多线程: 0 线程创建方法代码: package thread; /** * 线程须知: 线程的创建方式 thread
java5的java.util包提供了大量集合类。其中最常用的集合类有List、Set、Map等。这篇文章主要介绍其
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号