java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent
类 FutureTask<V>

java.lang.Object
  继承者 java.util.concurrent.FutureTask<V>
类型参数:
V - 此 FutureTask 的 get 方法所返回的结果类型。
所有已实现的接口:
Runnable, Future<V>

public class FutureTask<V>
extends Object
implements Future<V>, Runnable

可取消的异步计算。利用开始和取消计算的方法、查询计算是否完成的方法和检索计算结果的方法,此类提供了对 Future 的基本实现。仅在计算完成时才能检索结果;如果计算尚未完成,则阻塞 get 方法。一旦计算完成,就不能再重新开始或取消计算。

可使用 FutureTask 包装 CallableRunnable 对象。因为 FutureTask 实现了 Runnable,所以可将 FutureTask 提交给 Executor 执行。

除了作为一个独立的类外,此类还提供了 protected 功能,这在创建自定义任务类时可能很有用。

从以下版本开始:
1.5

构造方法摘要
FutureTask(Callable<V> callable)
          创建一个 FutureTask,一旦运行就执行给定的 Callable
FutureTask(Runnable runnable, V result)
          创建一个 FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时 get 返回给定的结果 。
 
方法摘要
 boolean cancel(boolean mayInterruptIfRunning)
          试图取消对此任务的执行。
protected  void done()
          当此任务转换到状态 isDone(不管是正常地还是通过取消)时,调用受保护的方法。
 V get()
          如有必要,等待计算完成,然后检索其结果。
 V get(long timeout, TimeUnit unit)
          如有必要,最多等待为使计算完成所给定的时间之后,检索其结果(如果结果可用)。
 boolean isCancelled()
          如果在任务正常完成前将其取消,则返回 true
 boolean isDone()
          如果任务已完成,则返回 true
 void run()
          除非已将此 Future 取消,否则将其设置为计算的结果。
protected  boolean runAndReset()
          执行计算而不设置其结果,然后将此 Future 重置为初始状态,如果计算遇到异常或已取消,则该操作失败。
protected  void set(V v)
          除非已经设置了此 Future 或已将其取消,否则将其结果设置为给定的值。
protected  void setException(Throwable t)
          除非已经设置了此 Future 或已将其取消,否则它将报告一个 ExecutionException,并将给定的 throwable 作为其原因。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

FutureTask

public FutureTask(Callable<V> callable)
创建一个 FutureTask,一旦运行就执行给定的 Callable

参数:
callable - 可调用的任务。
抛出:
NullPointerException - 如果 callable 为 null。

FutureTask

public FutureTask(Runnable runnable,
                  V result)
创建一个 FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时 get 返回给定的结果 。

参数:
runnable - 可运行的任务。
result - 成功完成时要返回的结果。如果不需要特定的结果,则考虑使用下列形式的构造:Future<?> f = new FutureTask<Object>(runnable, null)
抛出:
NullPointerException - 如果 runnable 为 null。
方法详细信息

isCancelled

public boolean isCancelled()
从接口 Future 复制的描述
如果在任务正常完成前将其取消,则返回 true

指定者:
接口 Future<V> 中的 isCancelled
返回:
如果任务完成前将其取消,则返回 true

isDone

public boolean isDone()
从接口 Future 复制的描述
如果任务已完成,则返回 true。 可能由于正常终止、异常或取消而完成,在所有这些情况中,此方法都将返回 true

指定者:
接口 Future<V> 中的 isDone
返回:
如果任务已完成,则返回 true

cancel

public boolean cancel(boolean mayInterruptIfRunning)
从接口 Future 复制的描述
试图取消对此任务的执行。如果任务已完成、或已取消,或者由于某些其他原因而无法取消,则此尝试将失败。当调用 cancel 时,如果调用成功,而此任务尚未启动,则此任务将永不运行。如果任务已经启动,则 mayInterruptIfRunning 参数确定是否应该以试图停止任务的方式来中断执行此任务的线程。

指定者:
接口 Future<V> 中的 cancel
参数:
mayInterruptIfRunning - 如果应该中断执行此任务的线程,则为 true;否则允许正在运行的任务运行完成。
返回:
如果无法取消任务,则返回 false,这通常是由于它已经正常完成;否则返回 true

get

public V get()
      throws InterruptedException,
             ExecutionException
从接口 Future 复制的描述
如有必要,等待计算完成,然后检索其结果。

指定者:
接口 Future<V> 中的 get
返回:
计算的结果。
抛出:
InterruptedException - 如果当前的线程在等待时被中断。
ExecutionException - 如果计算抛出异常。

get

public V get(long timeout,
             TimeUnit unit)
      throws InterruptedException,
             ExecutionException,
             TimeoutException
从接口 Future 复制的描述
如有必要,最多等待为使计算完成所给定的时间之后,检索其结果(如果结果可用)。

指定者:
接口 Future<V> 中的 get
参数:
timeout - 等待的最大时间。
unit - timeout 参数的时间单位。
返回:
计算的结果。
抛出:
InterruptedException - 如果当前的线程在等待时被中断。
ExecutionException - 如果计算抛出异常。
TimeoutException - 如果等待超时。

done

protected void done()
当此任务转换到状态 isDone(不管是正常地还是通过取消)时,调用受保护的方法。默认实现不执行任何操作。子类可以重写此方法,以调用完成回调或执行簿记。注意,可以查询此方法的实现内的状态,从而确定是否已取消了此任务。


set

protected void set(V v)
除非已经设置了此 Future 或已将其取消,否则将其结果设置为给定的值。

参数:
v - 值。

setException

protected void setException(Throwable t)
除非已经设置了此 Future 或已将其取消,否则它将报告一个 ExecutionException,并将给定的 throwable 作为其原因。

参数:
t - 失败的原因。

run

public void run()
除非已将此 Future 取消,否则将其设置为计算的结果。

指定者:
接口 Runnable 中的 run
另请参见:
Thread.run()

runAndReset

protected boolean runAndReset()
执行计算而不设置其结果,然后将此 Future 重置为初始状态,如果计算遇到异常或已取消,则该操作失败。本操作被设计用于那些本质上要执行多次的任务。

返回:
如果成功运行并重置,则返回 true。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策