# Class TaskQueue

java.lang.Object
java.util.AbstractCollection<Runnable>
java.util.AbstractQueue<Runnable>
java.util.concurrent.LinkedBlockingQueue<Runnable>
org.apache.tomcat.util.threads.TaskQueue

All Implemented Interfaces:
  `Serializable`, `Iterable<Runnable>`, `Collection<Runnable>`, `BlockingQueue<Runnable>`, `Queue<Runnable>`, `RetryableQueue<Runnable>`

public class TaskQueue extends LinkedBlockingQueue<Runnable> implements RetryableQueue<Runnable>
As task queue specifically designed to run with a thread pool executor. The task queue is optimised to properly utilize threads within a thread pool executor. If you use a normal queue, the executor will spawn threads when there are idle threads and you won't be able to force items onto the queue itself.

See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`protected static final StringManager`
`sm`

## Constructor Summary

Constructors
Constructor
Description
`TaskQueue()`
`TaskQueue(int capacity)`
`TaskQueue(Collection<? extends Runnable> c)`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`force(Runnable o)`
Used to add a task to the queue if the task has been rejected by the Executor.
`boolean`
`offer(Runnable o)`
`Runnable`
`poll(long timeout, TimeUnit unit)`
`void`
`setParent(ThreadPoolExecutor tp)`
`Runnable`
`take()`

### Methods inherited from class java.util.concurrent.LinkedBlockingQueue

`clear, contains, drainTo, drainTo, forEach, iterator, offer, peek, poll, put, remainingCapacity, remove, removeAll, removeIf, retainAll, size, spliterator, toArray, toArray, toString`

### Methods inherited from class java.util.AbstractQueue

`add, addAll, element, remove`

### Methods inherited from class java.util.AbstractCollection

`containsAll, isEmpty`

### Methods inherited from class java.lang.Object

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

### Methods inherited from interface java.util.concurrent.BlockingQueue

`add, contains, drainTo, drainTo, offer, put, remainingCapacity, remove`

### Methods inherited from interface java.util.Collection

`addAll, clear, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray`

### Methods inherited from interface java.lang.Iterable

`forEach`

### Methods inherited from interface java.util.Queue

`element, peek, poll, remove`

## Field Details

### sm

protected static final StringManager sm

## Constructor Details

### TaskQueue

public TaskQueue()

### TaskQueue

public TaskQueue(int capacity)

### TaskQueue

public TaskQueue(Collection<? extends Runnable> c)

## Method Details

### setParent

public void setParent(ThreadPoolExecutor tp)

### force

public boolean force(Runnable o)
Description copied from interface: `RetryableQueue`
Used to add a task to the queue if the task has been rejected by the Executor.

Specified by:
  `force` in interface `RetryableQueue<Runnable>`
Parameters:
  `o` - The task to add to the queue
Returns:
  `true` if the task was added to the queue, otherwise `false`

### offer

public boolean offer(Runnable o)

Specified by:
  `offer` in interface `BlockingQueue<Runnable>`
Specified by:
  `offer` in interface `Queue<Runnable>`
Overrides:
  `offer` in class `LinkedBlockingQueue<Runnable>`

### poll

public Runnable poll(long timeout, TimeUnit unit) throws InterruptedException

Specified by:
  `poll` in interface `BlockingQueue<Runnable>`
Overrides:
  `poll` in class `LinkedBlockingQueue<Runnable>`
Throws:
  `InterruptedException`

### take

public Runnable take() throws InterruptedException

Specified by:
  `take` in interface `BlockingQueue<Runnable>`
Overrides:
  `take` in class `LinkedBlockingQueue<Runnable>`
Throws:
  `InterruptedException`