Quite simply: if a thread is already initializing a class X when it requires class X to be initialized for another reason (e.g. because class Y uses something from it) then it just skips it. All the static variables have their default values.
For a precise description of what's going on, see the Java Language Specification, section 12.4.2. In particular:
If the Class object for C indicates that initialization is in progress for C by the current thread, then this must be a recursive request for initialization. Release LC and complete normally.