[concurrency-interest] Race condition on singleton

Rémi Forax forax at univ-mlv.fr
Thu Dec 9 08:39:44 EST 2010


Hi guy,
do you have a small Java file that reproduce the bug ?

Rémi


On 12/09/2010 01:44 PM, Guy Korland wrote:
> Hi,
>
> We found a very strange pattern that seems like contradicting the Java 
> Memory Model.
> It seems like a class that is maintained as singleton doesn't have its 
> constructor fully initialized!
> See the code example bellow.
>
> public class MyClass{
>
>   private static final MyClass = new MyClass();
>   private final HashMap map;
>
>   private MyClass(){
>       map = new HashMap();
>   }
>
>   public void put(Object k, Object v){
>      map.put(k,v);
>   }
>
>   static public getMyClass(){
>     return myClass;
>   }
> }
>
>
> And when we invoke the following:
>
> MyClass.getMyClass().put("a","b");
>
> We get a NullPointerException on the "map.put(k,v);", meaning the 
> map==null !?!?
>
> Any ideas?
>
> Thanks,
> Guy Korland
>
>
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at cs.oswego.edu
> http://cs.oswego.edu/mailman/listinfo/concurrency-interest

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20101209/87ff45c2/attachment.html>


More information about the Concurrency-interest mailing list