public interface Invocable
A task (typically either a Runnable
or Callable
that declares how it will behave when invoked:
Static methods and are provided that allow the current thread to be tagged
with a ThreadLocal
to indicate if it has a blocking invocation type.
Modifier and Type | Interface and Description |
---|---|
static class |
Invocable.InvocableExecutor
An Executor wrapper that knows about Invocable
|
static class |
Invocable.InvocationType |
Modifier and Type | Field and Description |
---|---|
static java.lang.ThreadLocal<java.lang.Boolean> |
__nonBlocking |
Modifier and Type | Method and Description |
---|---|
static java.lang.Runnable |
asPreferred(java.lang.Runnable task,
Invocable.InvocationType preferredInvocationType)
wrap a task with the to indicate invocation type.
|
default Invocable.InvocationType |
getInvocationType() |
static Invocable.InvocationType |
getInvocationType(java.lang.Object o)
Get the invocation type of an Object.
|
static void |
invokeNonBlocking(java.lang.Runnable task)
Invoke a task with the calling thread, tagged to indicate
that it will not block.
|
static void |
invokePreferNonBlocking(java.lang.Runnable task)
Invoke a task with the calling thread.
|
static void |
invokePreferred(java.lang.Runnable task,
Invocable.InvocationType preferredInvocationType)
Invoke a task with the calling thread.
|
static boolean |
isNonBlockingInvocation()
Test if the current thread has been tagged as non blocking
|
static boolean isNonBlockingInvocation()
static void invokeNonBlocking(java.lang.Runnable task)
task
- The task to invoke.static void invokePreferNonBlocking(java.lang.Runnable task)
Invocable
of Invocable.InvocationType.EITHER
then it is invoked with invokeNonBlocking(Runnable)
, to
indicate the type of invocation that has been assumed.task
- The task to invoke.static void invokePreferred(java.lang.Runnable task, Invocable.InvocationType preferredInvocationType)
Invocable
of Invocable.InvocationType.EITHER
and the preferredInvocationType is not Invocable.InvocationType.BLOCKING
then it is invoked with invokeNonBlocking(Runnable)
.task
- The task to invoke.preferredInvocationType
- The invocation type to use if the task
does not indicate a preference.static java.lang.Runnable asPreferred(java.lang.Runnable task, Invocable.InvocationType preferredInvocationType)
Invocable
of Invocable.InvocationType.EITHER
and the preferredInvocationType is not Invocable.InvocationType.BLOCKING
then it is wrapped with an invocation of invokeNonBlocking(Runnable)
.
otherwise the task itself is returned.task
- The task to invoke.preferredInvocationType
- The invocation type to use if the task
does not indicate a preference.static Invocable.InvocationType getInvocationType(java.lang.Object o)
o
- The object to check the invocation type of.Invocable
, it is coerced and the getInvocationType()
used, otherwise Invocable.InvocationType.BLOCKING
is returned.default Invocable.InvocationType getInvocationType()
Copyright © 1995–2017 Webtide. All rights reserved.