ExecutorService - producer/consumer implementation with NonBlockingQueue
closing ExecutorService after processing