Interface Invocable

All Known Subinterfaces:
Callback
All Known Implementing Classes:
Callback.Completable, Callback.Completing, Callback.Nested, CountingCallback, FutureCallback, IteratingCallback, IteratingNestedCallback, SharedBlockingCallback.Blocker

public interface Invocable

A task (typically either a Runnable or Callable that declares how it will behave when invoked:

  • blocking, the invocation will certainly block (e.g. performs blocking I/O)
  • non-blocking, the invocation will certainly not block
  • either, the invocation may block

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.

  • Field Details

  • Method Details

    • isNonBlockingInvocation

      static boolean isNonBlockingInvocation()
      Test if the current thread has been tagged as non blocking
      Returns:
      True if the task the current thread is running has indicated that it will not block.
    • invokeNonBlocking

      static void invokeNonBlocking(Runnable task)
      Invoke a task with the calling thread, tagged to indicate that it will not block.
      Parameters:
      task - The task to invoke.
    • combine

    • getInvocationType

      static Invocable.InvocationType getInvocationType(Object o)
      Get the invocation type of an Object.
      Parameters:
      o - The object to check the invocation type of.
      Returns:
      If the object is an Invocable, it is coerced and the getInvocationType() used, otherwise Invocable.InvocationType.BLOCKING is returned.
    • getInvocationType

      default Invocable.InvocationType getInvocationType()
      Returns:
      The InvocationType of this object