# Class RxTaskPool

java.lang.Object
org.apache.catalina.tribes.transport.RxTaskPool

public class RxTaskPool extends Object
A very simple thread pool class. Threads are cycled through a FIFO idle queue.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static interface`
`RxTaskPool.TaskCreator`
Factory interface for creating receive tasks.

## Constructor Summary

Constructors
Constructor
Description
`RxTaskPool(int maxTasks, int minTasks, RxTaskPool.TaskCreator creator)`
Create a new fixed-size receive task pool.

## Method Summary

Modifier and Type
Method
Description
`int`
`available()`
Return the number of idle tasks currently available in the pool.
`protected void`
`configureTask(AbstractRxTask task)`
Configure a receive task by associating it with this pool.
`int`
`getMaxThreads()`
Return the maximum number of tasks allowed in the pool.
`int`
`getMinThreads()`
Return the minimum number of tasks maintained in the pool.
`AbstractRxTask`
`getRxTask()`
Find an idle worker thread, if any.
`RxTaskPool.TaskCreator`
`getTaskCreator()`
Return the task creator factory used by this pool.
`void`
`returnWorker(AbstractRxTask worker)`
Called by the worker thread to return itself to the idle pool.
`void`
`setMaxTasks(int maxThreads)`
Set the maximum number of tasks allowed in the pool.
`void`
`setMinTasks(int minThreads)`
Set the minimum number of tasks maintained in the pool.
`void`
`stop()`
Stop the pool, closing all idle tasks and preventing new tasks from being acquired.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### RxTaskPool

public RxTaskPool(int maxTasks, int minTasks, RxTaskPool.TaskCreator creator) throws Exception
Create a new fixed-size receive task pool.

Parameters:
  `maxTasks` - maximum number of tasks in the pool
  `minTasks` - minimum number of tasks in the pool
  `creator` - factory for creating new receive tasks
Throws:
  `Exception` - if initialization fails

## Method Details

### configureTask

protected void configureTask(AbstractRxTask task)
Configure a receive task by associating it with this pool.

Parameters:
  `task` - the task to configure

### getRxTask

public AbstractRxTask getRxTask()
Find an idle worker thread, if any. Could return null.

Returns:
  a worker

### available

public int available()
Return the number of idle tasks currently available in the pool.

Returns:
  count of idle tasks

### returnWorker

public void returnWorker(AbstractRxTask worker)
Called by the worker thread to return itself to the idle pool.

Parameters:
  `worker` - The worker

### getMaxThreads

public int getMaxThreads()
Return the maximum number of tasks allowed in the pool.

Returns:
  maximum task count

### getMinThreads

public int getMinThreads()
Return the minimum number of tasks maintained in the pool.

Returns:
  minimum task count

### stop

public void stop()
Stop the pool, closing all idle tasks and preventing new tasks from being acquired.

### setMaxTasks

public void setMaxTasks(int maxThreads)
Set the maximum number of tasks allowed in the pool.

Parameters:
  `maxThreads` - maximum task count

### setMinTasks

public void setMinTasks(int minThreads)
Set the minimum number of tasks maintained in the pool.

Parameters:
  `minThreads` - minimum task count

### getTaskCreator

public RxTaskPool.TaskCreator getTaskCreator()
Return the task creator factory used by this pool.

Returns:
  the task creator