server concurrent ExecutorService concurrent LinkedBlockingQueue concurrent RejectedExecutionException concurrent ThreadPoolExecutor concurrent TimeUnit transport TNonblockingServerTransport slf4j Logger slf4j LoggerFactory thshaserver tnonblockingserver logger logger loggerfactory.getlogger thshaserver.class.getname args abstractnonblockingserverargs args workerthreads stoptimeoutval timeunit stoptimeoutunit timeunit.seconds executorservice executorservice args tnonblockingservertransport transport transport args workerthreads workerthreads getworkerthreads workerthreads getstoptimeoutval stoptimeoutval args stoptimeoutval stoptimeoutval this.stoptimeoutval stoptimeoutval timeunit getstoptimeoutunit stoptimeoutunit args stoptimeoutunit timeunit stoptimeoutunit this.stoptimeoutunit stoptimeoutunit executorservice getexecutorservice executorservice args executorservice executorservice executorservice this.executorservice executorservice executorservice invoker thshaserver args invoker args.executorservice createinvokerpool args.executorservice override serve startlistening startselectorthread setserving joinselector gracefullyshutdowninvokerpool setserving stoplistening executorservice createinvokerpool args options workerthreads options.workerthreads stoptimeoutval options.stoptimeoutval timeunit stoptimeoutunit options.stoptimeoutunit linkedblockingqueue queue linkedblockingqueue executorservice invoker threadpoolexecutor workerthreads workerthreads stoptimeoutval stoptimeoutunit queue invoker gracefullyshutdowninvokerpool invoker.shutdown timeoutms system.currenttimemillis timeoutms invoker.awaittermination timeoutms timeunit.milliseconds interruptedexception ix newnow system.currenttimemillis timeoutms newnow newnow override requestinvoke framebuffer framebuffer invocation framebuffer invoker.execute invocation rejectedexecutionexception rx logger.warn rx framebuffer framebuffer invocation framebuffer invocation framebuffer framebuffer invocation framebuffer framebuffer this.framebuffer framebuffer run framebuffer.invoke