Added AbstractService.shutdownRequest() to allow subclasses to override and respond to a shutdown request on a thread other than main