001package com.hammurapi.common.concurrent; 002 003import java.util.List; 004import java.util.concurrent.AbstractExecutorService; 005import java.util.concurrent.Callable; 006import java.util.concurrent.ExecutorService; 007import java.util.concurrent.RunnableFuture; 008import java.util.concurrent.TimeUnit; 009 010public class NonBlockingExecutorService extends AbstractExecutorService { 011 012 private ExecutorService master; 013 014 public NonBlockingExecutorService(ExecutorService master) { 015 this.master = master; 016 } 017 018 @Override 019 protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable) { 020 return new NonBlockingFutureTask<T>(callable); 021 } 022 023 protected <T extends Object> RunnableFuture<T> newTaskFor(Runnable runnable, T value) { 024 return new NonBlockingFutureTask<T>(runnable, value); 025 } 026 027 @Override 028 public void shutdown() { 029 master.shutdown(); 030 } 031 032 @Override 033 public List<Runnable> shutdownNow() { 034 return master.shutdownNow(); 035 } 036 037 @Override 038 public boolean isShutdown() { 039 return master.isShutdown(); 040 } 041 042 @Override 043 public boolean isTerminated() { 044 return master.isTerminated(); 045 } 046 047 @Override 048 public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException { 049 return master.awaitTermination(timeout, unit); 050 } 051 052 @Override 053 public void execute(Runnable command) { 054 master.execute(command); 055 } 056 057}