Double checked locking and GCJ?

Martin Egholm Nielsen martin@egholm-nielsen.dk
Tue Jun 28 11:10:00 GMT 2005


>  > Sorry for bringing up what may be the most tedious thread ever. But does 
>  > "double checked locking" work with GCJ:
>  > 
>  > // Works with acquire/release semantics for volatile
>  > // Broken under current semantics for volatile
>  >    class Foo {
>  >          private volatile Helper helper = null;
>  >          public Helper getHelper() {
>  >              if (helper == null) {
>  >                  synchronized(this) {
>  >                      if (helper == null)
>  >                          helper = new Helper();
>  >                  }
>  >              }
>  >              return helper;
>  >          }
>  >      }
>  > 
>  > (From: 
>  > http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html)
> I think it depends on the memory model of the particular hardware on
> which the program is executing.  For it to be otherwise, every access
> to a volatile would require a full memory barrier, and I don't think
> we do that.
Oh, ok... I wont do it then...

Thanks,
  Martin



More information about the Java mailing list