[
https://issues.apache.org/jira/browse/LANG-1086?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14338074#comment-14338074
]
Benedikt Ritter commented on LANG-1086:
---------------------------------------
bq. In spite of any of this, the existing busy-wait solution is problematic.
Especially if the initialize method throws an exception, leaving other threads
busy-waiting indefinitely.
The old AtomicSafeInitializer implementation seems to be broken. The patch
provided by Arthur looks like a good solution for this. Further more Arthurs
argument about a busy wait while calling the potentially expensive initialize
method sounds like we're calling for performance bottle necks here.
How about adding Arthurs implementation to lang, while preserving the old one?
> Remove busy wait from AtomicSafeInitializer.get()
> -------------------------------------------------
>
> Key: LANG-1086
> URL: https://issues.apache.org/jira/browse/LANG-1086
> Project: Commons Lang
> Issue Type: Improvement
> Components: lang.concurrent.*
> Reporter: Benedikt Ritter
> Assignee: Benedikt Ritter
> Labels: github
> Fix For: 3.4
>
>
> Placeholder ticket for https://github.com/apache/commons-lang/pull/46
> {quote}
> Remove the busy wait from AtomicSafeInitializer.get().
> Also ensure waiting threads do not wait indefinitely after initialize()
> throws an exception, instead throwing the same exception, re-wrapped, for
> each requester.
> Brought the unit tests up to 100% coverage on AtomicSafeInitializer.
> Eliminated race condition on verifying at least one thread waiting for
> initialize() to complete in another thread.
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)