
public class VirtualExecutorService extends AbstractExecutorService
ExecutorService with its own termination management.
 
 VirtualExecutorService is used when you want to inject an
 ExecutorService but you do not want to allow the explicit termination
 of threads on shutdown request.  It is particularly useful when the
 ExecutorService to inject is shared by different components and
 the life cycle of the components depend on the termination of the injected
 ExecutorService.
 
ExecutorService globalExecutor = ...; ExecutorService virtualExecutor = newVirtualExecutorService(globalExecutor);ChannelFactoryfactory = newNioServerSocketChannelFactory(virtualExecutor, virtualExecutor); ... // ChannelFactory.releaseExternalResources() shuts down the executor and // interrupts the I/O threads to terminate all I/O tasks and to release all // resources acquired by ChannelFactory. factory.releaseExternalResources(); // Note that globalExecutor is not shut down because VirtualExecutorService // implements its own termination management. All threads which were acquired // by ChannelFactory via VirtualExecutorService are returned to the pool. assert !globalExecutor.isShutdown();
ExecutorServiceshutdown() or shutdownNow()) does not
 shut down its parent Executor but simply sets its internal flag to
 reject further execution request.
 
 shutdownNow() interrupts only the thread which is executing the
 task executed via VirtualExecutorService.
 
 awaitTermination(long, TimeUnit) does not wait for real thread
 termination but wait until VirtualExecutorService is shut down and
 its active tasks are finished and the threads are returned to the parent
 Executor.
| Constructor and Description | 
|---|
VirtualExecutorService(Executor parent)
Creates a new instance with the specified parent  
Executor. | 
| Modifier and Type | Method and Description | 
|---|---|
boolean | 
awaitTermination(long timeout,
                TimeUnit unit)  | 
void | 
execute(Runnable command)  | 
boolean | 
isShutdown()  | 
boolean | 
isTerminated()  | 
void | 
shutdown()  | 
List<Runnable> | 
shutdownNow()  | 
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submitpublic boolean isShutdown()
public boolean isTerminated()
public void shutdown()
public boolean awaitTermination(long timeout,
                       TimeUnit unit)
                         throws InterruptedException
InterruptedExceptionpublic void execute(Runnable command)
Copyright © 2008-2014 The Netty Project. All Rights Reserved.