[jira] Commented: (LANG-334) Enum is not thread-safe

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

[jira] Commented: (LANG-334) Enum is not thread-safe

Gary D. Gregory (Jira)

    [ https://issues.apache.org/jira/browse/LANG-334?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12522590 ]

Henri Yandell commented on LANG-334:

Something else to consider. If we do synchronizedMap; would Hashtable be better. ie) any null values expected?

> 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.4
>         Attachments: 334.patch, 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.