//// </example>
        //// <example name='destroy'>
        void IPoolableObjectFactory.DestroyObject(object o)
        {
            // ah, self documenting code:
            // Here you can see that we decided to let the
            // executor process all the currently queued tasks.
            QueuedExecutor executor = o as Spring.Threading.QueuedExecutor;

            executor.ShutdownAfterProcessingCurrentlyQueuedTasks();
        }
 public void Queue()
 {
     //// <example name="execute">
     using (PooledObjectHolder holder = PooledObjectHolder.UseFrom(pool))
     {
         QueuedExecutor executor = (QueuedExecutor)holder.Pooled;
         executor.Execute(runnable);
     }
     //// </example>
     sync.Release();
 }
        //// </example>

        //// <example name='activate'>
        void IPoolableObjectFactory.ActivateObject(object o)
        {
            QueuedExecutor executor = o as QueuedExecutor;

            executor.Restart();
        }
        //// </example>

        //// <example name="validate">
        bool IPoolableObjectFactory.ValidateObject(object o)
        {
            QueuedExecutor executor = o as QueuedExecutor;

            return(executor.Thread != null);
        }