aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java
diff options
context:
space:
mode:
authorDan Zivkovic <zivkovic@google.com>2015-03-09 13:22:56 -0700
committerDan Zivkovic <zivkovic@google.com>2015-03-09 13:22:56 -0700
commitf9e2d271ca101a53a6aac772ca770242805793ef (patch)
treeebda6d23bd67b80ffcdf377741089f2434e6903c /java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java
parent2151095bb20854b31535de16bfd6c963d9c5d922 (diff)
downloadlatinime-f9e2d271ca101a53a6aac772ca770242805793ef.tar.gz
latinime-f9e2d271ca101a53a6aac772ca770242805793ef.tar.xz
latinime-f9e2d271ca101a53a6aac772ca770242805793ef.zip
Use a single background executor.
Bug 19625976. Change-Id: Ia03f440a31b059b5af42d162e1145330bf7b5ddf
Diffstat (limited to 'java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java')
-rw-r--r--java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java55
1 files changed, 9 insertions, 46 deletions
diff --git a/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java b/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java
index c533a6273..b21538caa 100644
--- a/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java
@@ -21,7 +21,6 @@ import android.util.Log;
import com.android.inputmethod.annotations.UsedForTesting;
import java.lang.Thread.UncaughtExceptionHandler;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;
@@ -31,11 +30,10 @@ import java.util.concurrent.ThreadFactory;
*/
public class ExecutorUtils {
- private static final String STATIC_LANGUAGE_MODEL_UPDATE = "StaticLanguageModelUpdate";
- private static final String DYNAMIC_LANGUAGE_MODEL_UPDATE = "DynamicLanguageModelUpdate";
+ private static final String TAG = "ExecutorUtils";
- private static final ConcurrentHashMap<String, ScheduledExecutorService> sExecutorMap =
- new ConcurrentHashMap<>();
+ private static final ScheduledExecutorService sExecutorService =
+ Executors.newSingleThreadScheduledExecutor(new ExecutorFactory());
@UsedForTesting
private static ScheduledExecutorService sExecutorServiceForTests;
@@ -47,37 +45,13 @@ public class ExecutorUtils {
}
/**
- * @return scheduled executor service used to update static language models
+ * @return scheduled executor service used to run background tasks
*/
- public static ScheduledExecutorService getExecutorForStaticLanguageModelUpdate() {
- return getExecutor(STATIC_LANGUAGE_MODEL_UPDATE);
- }
-
- /**
- * @return scheduled executor service used to update dynamic language models
- */
- public static ScheduledExecutorService getExecutorForDynamicLanguageModelUpdate() {
- return getExecutor(DYNAMIC_LANGUAGE_MODEL_UPDATE);
- }
-
- /**
- * Gets the executor for the given id.
- */
- private static ScheduledExecutorService getExecutor(final String id) {
+ public static ScheduledExecutorService getBackgroundExecutor() {
if (sExecutorServiceForTests != null) {
return sExecutorServiceForTests;
}
- ScheduledExecutorService executor = sExecutorMap.get(id);
- if (executor == null) {
- synchronized (sExecutorMap) {
- executor = sExecutorMap.get(id);
- if (executor == null) {
- executor = Executors.newSingleThreadScheduledExecutor(new ExecutorFactory(id));
- sExecutorMap.put(id, executor);
- }
- }
- }
- return executor;
+ return sExecutorService;
}
/**
@@ -85,28 +59,17 @@ public class ExecutorUtils {
*/
@UsedForTesting
public static void shutdownAllExecutors() {
- synchronized (sExecutorMap) {
- for (final ScheduledExecutorService executor : sExecutorMap.values()) {
- executor.execute(new ExecutorShutdown(executor));
- }
- sExecutorMap.clear();
- }
+ sExecutorService.execute(new ExecutorShutdown(sExecutorService));
}
private static class ExecutorFactory implements ThreadFactory {
- private final String mThreadName;
-
- public ExecutorFactory(final String threadName) {
- mThreadName = threadName;
- }
-
@Override
public Thread newThread(final Runnable runnable) {
- Thread thread = new Thread(runnable, mThreadName);
+ Thread thread = new Thread(runnable, TAG);
thread.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
- Log.w(mThreadName + "-" + runnable.getClass().getSimpleName(), ex);
+ Log.w(TAG + "-" + runnable.getClass().getSimpleName(), ex);
}
});
return thread;