What does "stable" mean in this context?  All we can guarantee is that the size returned was accurate at the instant size() was called -- it may change immediately after, but there's nothing to be gained from waiting or synchronizing, at least not with this implementation.  Perhaps the OpenJDK version's requires the size to be calculated, not just read?