class IdlingThreadPoolExecutor : ThreadPoolExecutor, IdlingResource


A ThreadPoolExecutor that can be registered as an IdlingResource with Espresso.

Overrides parent methods to monitor threads starting, and finishing execution. Uses to track number of active tasks.

Summary

Public constructors

IdlingThreadPoolExecutor(
    resourceName: String!,
    corePoolSize: Int,
    maximumPoolSize: Int,
    keepAliveTime: Long,
    unit: TimeUnit!,
    workQueue: BlockingQueue<Runnable!>!,
    threadFactory: ThreadFactory!
)

Creates a new IdlingThreadPoolExecutor with the given initial parameters and default rejected execution handler.

Public functions

synchronized Unit
execute(command: Runnable!)
String!

Returns the name of the resources (used for logging and idempotency of registration).

Boolean

Returns true if resource is currently idle.

Unit

Registers the given ResourceCallback with the resource.

Protected functions

Unit
Unit

Inherited functions

From java.util.concurrent.AbstractExecutorService
(Mutable)List<Future<T!>!>!
<T> invokeAll(tasks: (Mutable)Collection<Callable<T!>!>!)
T!
<T> invokeAny(tasks: (Mutable)Collection<Callable<T!>!>!)
RunnableFuture<T!>!
<T> newTaskFor(runnable: Runnable!, value: T!)
Future<Any!>!
submit(task: Runnable!)
Future<T!>!
<T> submit(task: Runnable!, result: T!)
From java.util.concurrent.ThreadPoolExecutor

Public constructors

IdlingThreadPoolExecutor

IdlingThreadPoolExecutor(
    resourceName: String!,
    corePoolSize: Int,
    maximumPoolSize: Int,
    keepAliveTime: Long,
    unit: TimeUnit!,
    workQueue: BlockingQueue<Runnable!>!,
    threadFactory: ThreadFactory!
)

Creates a new IdlingThreadPoolExecutor with the given initial parameters and default rejected execution handler.

Parameters
resourceName: String!

the name of the executor (used for logging and idempotency of registration).

corePoolSize: Int

the number of threads to keep in the pool, even if they are idle, unless allowCoreThreadTimeOut is set.

maximumPoolSize: Int

the maximum number of threads to allow in the pool.

keepAliveTime: Long

when the number of threads is greater than the core, this is the maximum time that excess idle threads will wait for new tasks before terminating.

unit: TimeUnit!

the time unit for the keepAliveTime argument.

workQueue: BlockingQueue<Runnable!>!

the queue to use for holding tasks before they are executed. This queue will hold only the Runnable tasks submitted by the execute method.

threadFactory: ThreadFactory!

the factory to use when the executor creates a new thread.

Public functions

execute

synchronized fun execute(command: Runnable!): Unit

getName

fun getName(): String!

Returns the name of the resources (used for logging and idempotency of registration).

isIdleNow

fun isIdleNow(): Boolean

Returns true if resource is currently idle. Espresso will always call this method from the main thread, therefore it should be non-blocking and return immediately.

registerIdleTransitionCallback

fun registerIdleTransitionCallback(
    callback: IdlingResource.ResourceCallback!
): Unit

Registers the given ResourceCallback with the resource. Espresso will call this method:

  • with its implementation of ResourceCallback so it can be notified asynchronously that your resource is idle
  • from the main thread, but you are free to execute the callback's onTransitionToIdle from any thread
  • once (when it is initially given a reference to your IdlingResource)

You only need to call this upon transition from busy to idle - if the resource is already idle when the method is called invoking the call back is optional and has no significant impact.

Protected functions

afterExecute

protected fun afterExecute(r: Runnable!, t: Throwable!): Unit

terminated

protected fun terminated(): Unit