@kirillrakhman: On the modern JVM uncontended (single-threaded) access to monitors is considered to be pretty cheap, but I don't know how it is on Android.
And remember that only the first access to the lazy value is synchronized, all subsequent reads do not involve any locks.