Use an executor to serialize opening dictionaries.

Bug: 13082957
Change-Id: I25570ab4da94337ed60330c0869fe47657096626
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
index e767e4b..2dba713 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorForSuggest.java
@@ -28,6 +28,7 @@
 import com.android.inputmethod.latin.personalization.UserHistoryDictionary;
 import com.android.inputmethod.latin.settings.SettingsValues;
 import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.ExecutorUtils;
 import com.android.inputmethod.latin.utils.LanguageModelParam;
 
 import java.io.File;
@@ -208,8 +209,7 @@
         if (listener != null) {
             listener.onUpdateMainDictionaryAvailability(hasMainDictionary());
         }
-        new Thread("InitializeBinaryDictionary") {
-            @Override
+        ExecutorUtils.getExecutor("InitializeBinaryDictionary").execute(new Runnable() {
             public void run() {
                 final DictionaryCollection newMainDict =
                         DictionaryFactory.createMainDictionaryFromManager(context, locale);
@@ -219,7 +219,7 @@
                 }
                 mLatchForWaitingLoadingMainDictionary.countDown();
             }
-        }.start();
+        });
     }
 
     // The main dictionary could have been loaded asynchronously.  Don't cache the return value