RFR 8012326: Deadlock occurs when Charset.availableCharsets() is called by several threads at the same time

Alan Bateman Alan.Bateman at oracle.com
Wed May 8 18:58:50 UTC 2013


On 04/05/2013 20:05, Xueming Shen wrote:
> :
>
> Another sync need is for the "init()", in which it may update the 
> aliasMap,
> classMap and aliasNameMap via charset() and deleteCharset() if those
> special properties are defined. There are two sources for the charset()/
> deleteCharset(), one is from the constructor, one is from the init(), 
> given
> ExtendedCharsets is now singleton and get initialized at class init, 
> these
> should be no race concern between these two sources, so no need to
> have any sync block inside charset() and deleteCharset(), the only thing
> need to defend is inside init(), and all three public methods invoke the
> init() at the beginning of the method body.
>
One question on this. What would be the downside be doing all the 
initialization in ExtendedCharsets's constructor instead of two phases? 
Aside from availableCharsets then I would expect that all other usages 
would require the mappings to be setup.

-Alan.




More information about the core-libs-dev mailing list