public class IdlingThreadPoolExecutor extends ThreadPoolExecutor implements 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(
    String resourceName,
    int corePoolSize,
    int maximumPoolSize,
    long keepAliveTime,
    TimeUnit unit,
    BlockingQueue<Runnable> workQueue,
    ThreadFactory threadFactory
)

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

Public methods

synchronized void
execute(Runnable command)
String

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

boolean

Returns true if resource is currently idle.

void

Registers the given ResourceCallback with the resource.

Protected methods

void
void

Public constructors

IdlingThreadPoolExecutor

public IdlingThreadPoolExecutor(
    String resourceName,
    int corePoolSize,
    int maximumPoolSize,
    long keepAliveTime,
    TimeUnit unit,
    BlockingQueue<Runnable> workQueue,
    ThreadFactory threadFactory
)

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

Parameters
String resourceName

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

int corePoolSize

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

int maximumPoolSize

the maximum number of threads to allow in the pool.

long keepAliveTime

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.

TimeUnit unit

the time unit for the keepAliveTime argument.

BlockingQueue<Runnable> workQueue

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 methods

execute

synchronized public void execute(Runnable command)

getName

public String getName()

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

isIdleNow

public boolean isIdleNow()

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

public void registerIdleTransitionCallback(
    IdlingResource.ResourceCallback callback
)

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 methods

afterExecute

protected void afterExecute(Runnable r, Throwable t)

terminated

protected void terminated()