There are two reasons why execute would throw a RejectedExecutionException
- The queue is full and you cannot add any more threads
- The ThreadPool has been shut down
Since you are using a LinkedBlockingQueue, the only way I can see this occurring is because you shut down the pool.