Adding timeout and backup on DiscoveryClient's heartbeat and cacheRefresh

Am I correct in saying that with these arguments the passed SynchronousQueue will never accept an offer()?

`ThreadPoolExecutor` will only offer the task to the queue if there are no "idle threads" and the `SynchronousQueue` will never accept an offer if there are no "idle threads".

Is this the intent of using a `SynchronousQueue`? If yes, I guess using a zero size queue will also work?