Make the static field volatile and use double checking for performance.

Test: ./gradlew :startup:startup-runtime:connectedAndroidCheck
Change-Id: I120c787c04db761eb2fbc8462acf10c10af2e7e2
diff --git a/startup/startup-runtime/src/main/java/androidx/startup/AppInitializer.java b/startup/startup-runtime/src/main/java/androidx/startup/AppInitializer.java
index 92275a1..cd62780 100644
--- a/startup/startup-runtime/src/main/java/androidx/startup/AppInitializer.java
+++ b/startup/startup-runtime/src/main/java/androidx/startup/AppInitializer.java
@@ -47,7 +47,7 @@
     /**
      * The {@link AppInitializer} instance.
      */
-    private static AppInitializer sInstance;
+    private static volatile AppInitializer sInstance;
 
     /**
      * Guards app initialization.
@@ -77,12 +77,14 @@
     @NonNull
     @SuppressWarnings("UnusedReturnValue")
     public static AppInitializer getInstance(@NonNull Context context) {
-        synchronized (sLock) {
-            if (sInstance == null) {
-                sInstance = new AppInitializer(context);
+        if (sInstance == null) {
+            synchronized (sLock) {
+                if (sInstance == null) {
+                    sInstance = new AppInitializer(context);
+                }
             }
-            return sInstance;
         }
+        return sInstance;
     }
 
     /**