class Concurrent::SingleThreadExecutor

@!macro single_thread_executor

A thread pool with a single thread an unlimited queue. Should the thread
die for any reason it will be removed and replaced, thus ensuring that
the executor will always remain viable and available to process jobs.

A common pattern for background processing is to create a single thread
on which an infinite loop is run. The thread's loop blocks on an input
source (perhaps blocking I/O or a queue) and processes each input as it
is received. This pattern has several issues. The thread itself is highly
susceptible to errors during processing. Also, the thread itself must be
constantly monitored and restarted should it die. `SingleThreadExecutor`
encapsulates all these bahaviors. The task processor is highly resilient
to errors from within tasks. Also, should the thread die it will
automatically be restarted.

The API and behavior of this class are based on Java's `SingleThreadExecutor`.

@!macro abstract_executor_service_public_api