[ https://issues.apache.org/jira/browse/LANG-334?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12502119 ]
Michael Sclafani commented on LANG-334: --------------------------------------- I think it will be sufficient to simply use Collections.synchronizedMap() to wrap the map instance that is assigned to cEnumClasses. > Enum is not thread-safe > ----------------------- > > Key: LANG-334 > URL: https://issues.apache.org/jira/browse/LANG-334 > Project: Commons Lang > Issue Type: Bug > Reporter: Michael Sclafani > Fix For: 2.3.1 > > Attachments: EnumPlay.java > > > Enum uses no synchronization. Even if you assume that instances are only > declared statically, the cEnumClasses map is global and can be written to > when a thread triggers static initialization of B.class while some other > thread is doing getEnumList(A.class). Unsynchronized access of a map > undergoing mutation is not thread-safe. > This isn't theoretical. We're seeing ValuedEnum.getEnum(X.class, 0) return > null after returning the correct value over 100,000 times, and then return > the correct value again on the next invocation. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]