[ 
https://issues.apache.org/jira/browse/LANG-501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12705830#action_12705830
 ] 

Sebb commented on LANG-501:
---------------------------

Not sure why getExternalExecutor() is synchronized whereas 
setExternalExecutor() is not. 
Surely the set method should be synch., especially since the field is 
documented as @GuardedBy("this") - as is future.

If the externalExecutor could be made final - e.g. by dropping the 
setExternalExecutor() method - then the synch. would not be needed (assuming 
ExecutorService is immutable).

The method fetchCurrentExecutor() fetches currentExecutor twice and writes it 
once, but is not synchronized, and is not thread-safe.

InitializationTask.call() needs to synchronize the code in the finally clause 
otherwise it may not see the correct value of externalExecutor.

> Add support for background initialization
> -----------------------------------------
>
>                 Key: LANG-501
>                 URL: https://issues.apache.org/jira/browse/LANG-501
>             Project: Commons Lang
>          Issue Type: New Feature
>            Reporter: Oliver Heger
>            Priority: Minor
>             Fix For: 3.0
>
>         Attachments: BackgroundInitializer.patch
>
>
> This is a suggestion to add a {{BackgroundInitializer}} class that  allows 
> initializing an object in a background task. {{BackgroundInitializer}} is a 
> thin wrapper around a {{java.util.concurrent.Future}} object and uses an 
> {{ExecutorService}} for starting a background task that performs 
> initialization.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to