There is some confusion about what the default value for timeout should be, and what 0 should mean, and whether we should use 0 or -1 to mean "wait forever".
The Java API docs are not very clear about this here: http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html#get-long-java.util.concurrent.TimeUnit- http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html#awaitTermination-long-java.util.concurrent.TimeUnit- but clear that zero mean wait forever here: http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#join-long- We are unclear in org.apache.logging.log4j.core.util.ExecutorServices where the docs says < 0 to wait forever, but the implementation actually do it for <= 0. We are also unclear in org.apache.logging.log4j.core.LifeCycle2 what 0 and < 0 actually mean. We need to clear this up, it is needed for https://issues.apache.org/jira/browse/LOG4J2-1623 I suggest that we in ExecutorServices update the docs to match the implemenation, and in LifeCycle2 specify that 0 mean the default timeout for the component (this is what is currently implemented) and -1 for wait forever. -- [image: MagineTV] *Mikael Ståldal* Senior software developer *Magine TV* mikael.stal...@magine.com Grev Turegatan 3 | 114 46 Stockholm, Sweden | www.magine.com Privileged and/or Confidential Information may be contained in this message. If you are not the addressee indicated in this message (or responsible for delivery of the message to such a person), you may not copy or deliver this message to anyone. In such case, you should destroy this message and kindly notify the sender by reply email.