Yes, queue size in executor can be grown/shrinked automatically. But number of threads which gets runnable object from queue is fixed by constructor. This parameter is such feature, isn't it? If so, we could not update it if we use the same instance. 

BTW, I have replaced existing queue/worker to executor/runnable once.  My first contribution for connection/handler separation was so. But I canceled it because separation itself was too big. Then I have forgotten it until now.

If we want to use executor in handler, I could provide such implementation. Should I?