Deadlock between FileHandler and ConsoleHandler when using customized formatter

Peter Levart peter.levart at
Mon Dec 9 08:28:55 UTC 2013

On 12/09/2013 08:02 AM, Shi Jun Zhang wrote:
> Peter,
> I think you are misunderstanding this problem. This deadlock is not 
> related to the formatter synchronization, we can make 
> CustomerFormatter.format not synchronized and not call super.format, 
> the deadlock still happens.

I'm not saying that your formatters are explicitly synchronized - all 
formatters are currently effectively synchronized by LogHandlers. The 
Formatter is invoked from within LogHandler's publish() method which is 
synchronized (on LogHandler.this). If formatters were invoked out of 
this synchronized section, there would be no danger of deadlocks when 
using Logger.log from within custom formatters. But then other issues 
would arise as a consequence of non-multithreaded formatters being 
invoked concurrently...

Regards, Peter

More information about the core-libs-dev mailing list