java Callable Future

原创 2016年06月01日 16:36:41
@FunctionalInterface
public interface Runnable {
   public abstract void run();
}

@FunctionalInterface
public interface Callable<V> {
   V call() throws Exception;
}

<pre name="code" class="java">public interface Future<V> {
boolean cancel(boolean mayInterruptIfRunning);

boolean isCancelled();

 boolean isDone();

 V get() throws InterruptedException, ExecutionException;

 V get(long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException;
}

public interface RunnableFuture<V> extends Runnable, Future<V> {
    /**
     * Sets this Future to the result of its computation
     * unless it has been cancelled.
     */
    void run();
}





package com.provider.future;

import java.util.Random;
import java.util.concurrent.Callable;

public class Task implements Callable<Integer>{

	public Integer call() throws Exception {
		Thread.sleep(10000);
		Random r = new Random();
		return r.nextInt(1000);
	}

}

package com.provider.future;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;

public class TestFu {
	
	public void fun1(){
		ExecutorService executorService = Executors.newFixedThreadPool(2);
		Future<Integer> submit = executorService.submit(new Task());
		executorService.shutdown();
		
		System.out.println(submit.isDone());
		try {
			Thread.sleep(1500);
			System.out.println(submit.get());
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
	}
	
	public void fun2(){
		ExecutorService executorService = Executors.newFixedThreadPool(2);
		FutureTask<Integer> ft = new FutureTask<Integer>(new Task());
		executorService.submit(ft);
		executorService.shutdown();
		System.out.println(ft.isDone());
		try {
			Thread.sleep(1500);
			System.out.println(ft.get());
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		TestFu testFu =new TestFu();
		testFu.fun1();
		testFu.fun2();
	}

}




版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 7之多线程线程池 - Callable和Future

Callable接口代表一段可以调用并返回结果的代码;Future接口表示异步任务,是还没有完成的任务给出的未来结果。所以说Callable用于产生结果,Future用于获取结果。     Java...
  • mazhimazh
  • mazhimazh
  • 2014年02月16日 18:55
  • 15520

Java并发编程-Executor框架之Callable和Future接口

在上一篇文章中我们已经了解了Executor框架进行线程管理,这篇文章将学习Executor框架的另一个特性,我们知道执行Runnable任务是没有返回值得,但Executor可以运行并发任务并获得返...
  • chenchaofuck1
  • chenchaofuck1
  • 2016年06月07日 20:58
  • 3230

Java之Callable 和 Future实现线程等待

1、Callable: public interface Callable 返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。 Callable 接口类似于...
  • shihuacai
  • shihuacai
  • 2013年04月26日 21:06
  • 4227

Android(Java)之多线程结果返回——Future 、FutureTask、Callable、Runnable

  • 2016年06月20日 20:11
  • 1.6MB
  • 下载

(五) Java多线程详解之Callable和Future阻塞线程同步返回结果

Callable要采用ExecutorSevice的submit方法提交,返回Future对象,通过Future的get()方法,同步拿到线程的返回结果,实例代码如下:public class Thr...
  • RobertoHuang
  • RobertoHuang
  • 2017年05月22日 20:55
  • 1760

java线程:关于Callable和Future的简单使用:有返回值的线程

分类: java_线程2012-07-03 19:25 53人阅读 评论(0) 收藏 举报 [java] view plaincopy import jav...
  • rainyear
  • rainyear
  • 2013年04月26日 17:15
  • 988

Android(Java)之多线程结果返回——Future 、FutureTask、Callable、Runnable

Android、Java中Runnable十分常见,在开新线程时,我们常用new Thread(Runnable).start() 或者线程池搭载Runnable。 日常使用,在不需要线程返回时,使用...
  • yangzhaomuma
  • yangzhaomuma
  • 2016年06月20日 20:28
  • 2222

【转载】 Java线程:Callable和Future

原文地址:http://blog.csdn.net/ghsau/article/details/7451464 接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很...
  • qingning1
  • qingning1
  • 2015年03月17日 11:28
  • 228

Java 多线程设置线程超时时间之 Callable接口和Future接口 线程超时控制

来源URL:http://blog.csdn.net/zlj526/article/details/40782027 Callable接口和Future接口介绍         在Java中,如...
  • u013160024
  • u013160024
  • 2017年02月11日 19:28
  • 929

Java并发编程:Callable、Future和FutureTask原理解析

返回结果的任务Callable与FutureExecutor框架使用Runnable作为其基本的任务表示形式。Runnable是一种有很大局限的抽象,它不能返回一个值或抛出一个受检查的异常。Runna...
  • codershamo
  • codershamo
  • 2016年07月13日 20:00
  • 4967
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java Callable Future
举报原因:
原因补充:

(最多只允许输入30个字)