public class DefaultPromise<V> extends AbstractFuture<V> implements Promise<V>
限定符 | 构造器和说明 |
---|---|
protected |
DefaultPromise()
See
executor() for expectations of the executor. |
|
DefaultPromise(EventExecutor executor)
Creates a new instance.
|
限定符和类型 | 方法和说明 |
---|---|
Promise<V> |
addListener(GenericFutureListener<? extends Future<? super V>> listener)
Adds the specified listener to this future.
|
Promise<V> |
addListeners(GenericFutureListener<? extends Future<? super V>>... listeners)
Adds the specified listeners to this future.
|
Promise<V> |
await()
Waits for this future to be completed.
|
boolean |
await(long timeoutMillis)
Waits for this future to be completed within the
specified time limit.
|
boolean |
await(long timeout,
java.util.concurrent.TimeUnit unit)
Waits for this future to be completed within the
specified time limit.
|
Promise<V> |
awaitUninterruptibly()
Waits for this future to be completed without
interruption.
|
boolean |
awaitUninterruptibly(long timeoutMillis)
Waits for this future to be completed within the
specified time limit without interruption.
|
boolean |
awaitUninterruptibly(long timeout,
java.util.concurrent.TimeUnit unit)
Waits for this future to be completed within the
specified time limit without interruption.
|
boolean |
cancel(boolean mayInterruptIfRunning)
If the cancellation was successful it will fail the future with a
CancellationException . |
java.lang.Throwable |
cause()
Returns the cause of the failed I/O operation if the I/O operation has
failed.
|
protected void |
checkDeadLock() |
protected EventExecutor |
executor()
Get the executor used to notify listeners when this promise is complete.
|
V |
get() |
V |
get(long timeout,
java.util.concurrent.TimeUnit unit) |
V |
getNow()
Return the result without blocking.
|
boolean |
isCancellable()
returns
true if and only if the operation can be cancelled via Future.cancel(boolean) . |
boolean |
isCancelled() |
boolean |
isDone() |
boolean |
isSuccess()
Returns
true if and only if the I/O operation was completed
successfully. |
protected static void |
notifyListener(EventExecutor eventExecutor,
Future<?> future,
GenericFutureListener<?> listener)
Notify a listener that a future has completed.
|
Promise<V> |
removeListener(GenericFutureListener<? extends Future<? super V>> listener)
Removes the first occurrence of the specified listener from this future.
|
Promise<V> |
removeListeners(GenericFutureListener<? extends Future<? super V>>... listeners)
Removes the first occurrence for each of the listeners from this future.
|
Promise<V> |
setFailure(java.lang.Throwable cause)
Marks this future as a failure and notifies all
listeners.
|
Promise<V> |
setSuccess(V result)
Marks this future as a success and notifies all
listeners.
|
boolean |
setUncancellable()
Make this future impossible to cancel.
|
Promise<V> |
sync()
Waits for this future until it is done, and rethrows the cause of the failure if this future
failed.
|
Promise<V> |
syncUninterruptibly()
Waits for this future until it is done, and rethrows the cause of the failure if this future
failed.
|
java.lang.String |
toString() |
protected java.lang.StringBuilder |
toStringBuilder() |
boolean |
tryFailure(java.lang.Throwable cause)
Marks this future as a failure and notifies all
listeners.
|
boolean |
trySuccess(V result)
Marks this future as a success and notifies all
listeners.
|
public DefaultPromise(EventExecutor executor)
EventExecutor.newPromise()
to create a new promiseexecutor
- the EventExecutor
which is used to notify the promise once it is complete.
It is assumed this executor will protect against StackOverflowError
exceptions.
The executor may be used to avoid StackOverflowError
by executing a Runnable
if the stack
depth exceeds a threshold.protected DefaultPromise()
executor()
for expectations of the executor.public Promise<V> setSuccess(V result)
Promise
IllegalStateException
.setSuccess
在接口中 Promise<V>
public boolean trySuccess(V result)
Promise
trySuccess
在接口中 Promise<V>
true
if and only if successfully marked this future as
a success. Otherwise false
because this future is
already marked as either a success or a failure.public Promise<V> setFailure(java.lang.Throwable cause)
Promise
IllegalStateException
.setFailure
在接口中 Promise<V>
public boolean tryFailure(java.lang.Throwable cause)
Promise
tryFailure
在接口中 Promise<V>
true
if and only if successfully marked this future as
a failure. Otherwise false
because this future is
already marked as either a success or a failure.public boolean setUncancellable()
Promise
setUncancellable
在接口中 Promise<V>
true
if and only if successfully marked this future as uncancellable or it is already done
without being cancelled. false
if this future has been cancelled already.public boolean isSuccess()
Future
true
if and only if the I/O operation was completed
successfully.public boolean isCancellable()
Future
true
if and only if the operation can be cancelled via Future.cancel(boolean)
.public java.lang.Throwable cause()
Future
null
if succeeded or this future is not
completed yet.public Promise<V> addListener(GenericFutureListener<? extends Future<? super V>> listener)
Future
addListener
在接口中 Promise<V>
public Promise<V> addListeners(GenericFutureListener<? extends Future<? super V>>... listeners)
Future
addListeners
在接口中 Promise<V>
public Promise<V> removeListener(GenericFutureListener<? extends Future<? super V>> listener)
Future
removeListener
在接口中 Promise<V>
public Promise<V> removeListeners(GenericFutureListener<? extends Future<? super V>>... listeners)
Future
removeListeners
在接口中 Promise<V>
public Promise<V> await() throws java.lang.InterruptedException
Future
public Promise<V> awaitUninterruptibly()
Future
InterruptedException
and
discards it silently.awaitUninterruptibly
在接口中 Promise<V>
public boolean await(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException
Future
true
if and only if the future was completed within
the specified time limitjava.lang.InterruptedException
- if the current thread was interruptedpublic boolean await(long timeoutMillis) throws java.lang.InterruptedException
Future
true
if and only if the future was completed within
the specified time limitjava.lang.InterruptedException
- if the current thread was interruptedpublic boolean awaitUninterruptibly(long timeout, java.util.concurrent.TimeUnit unit)
Future
InterruptedException
and discards it silently.true
if and only if the future was completed within
the specified time limitpublic boolean awaitUninterruptibly(long timeoutMillis)
Future
InterruptedException
and discards it silently.true
if and only if the future was completed within
the specified time limitpublic V getNow()
Future
null
.
As it is possible that a null
value is used to mark the future as successful you also need to check
if the future is really done with Future.isDone()
and not rely on the returned null
value.public V get() throws java.lang.InterruptedException, java.util.concurrent.ExecutionException
get
在接口中 java.util.concurrent.Future<V>
get
在类中 AbstractFuture<V>
java.lang.InterruptedException
java.util.concurrent.ExecutionException
public V get(long timeout, java.util.concurrent.TimeUnit unit) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException, java.util.concurrent.TimeoutException
get
在接口中 java.util.concurrent.Future<V>
get
在类中 AbstractFuture<V>
java.lang.InterruptedException
java.util.concurrent.ExecutionException
java.util.concurrent.TimeoutException
public boolean cancel(boolean mayInterruptIfRunning)
CancellationException
.cancel
在接口中 java.util.concurrent.Future<V>
mayInterruptIfRunning
- this value has no effect in this implementation.public boolean isCancelled()
isCancelled
在接口中 java.util.concurrent.Future<V>
public boolean isDone()
isDone
在接口中 java.util.concurrent.Future<V>
public Promise<V> sync() throws java.lang.InterruptedException
Future
public Promise<V> syncUninterruptibly()
Future
syncUninterruptibly
在接口中 Promise<V>
public java.lang.String toString()
toString
在类中 java.lang.Object
protected java.lang.StringBuilder toStringBuilder()
protected EventExecutor executor()
It is assumed this executor will protect against StackOverflowError
exceptions.
The executor may be used to avoid StackOverflowError
by executing a Runnable
if the stack
depth exceeds a threshold.
protected void checkDeadLock()
protected static void notifyListener(EventExecutor eventExecutor, Future<?> future, GenericFutureListener<?> listener)
This method has a fixed depth of MAX_LISTENER_STACK_DEPTH
that will limit recursion to prevent
StackOverflowError
and will stop notifying listeners added after this threshold is exceeded.
eventExecutor
- the executor to use to notify the listener listener
.future
- the future that is complete.listener
- the listener to notify.