diff --git a/java/src/com/android/inputmethod/latin/ContactsContentObserver.java b/java/src/com/android/inputmethod/latin/ContactsContentObserver.java
index b23226d..777bfe6 100644
--- a/java/src/com/android/inputmethod/latin/ContactsContentObserver.java
+++ b/java/src/com/android/inputmethod/latin/ContactsContentObserver.java
@@ -27,6 +27,7 @@
 import com.android.inputmethod.latin.utils.ExecutorUtils;
 
 import java.util.ArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * A content observer that listens to updates to content provider {@link Contacts#CONTENT_URI}.
@@ -35,13 +36,14 @@
 public class ContactsContentObserver implements Runnable {
     private static final String TAG = ContactsContentObserver.class.getSimpleName();
     private static final boolean DEBUG = false;
-
-    private ContentObserver mContentObserver;
-    private ContactsChangedListener mContactsChangedListener;
+    private static AtomicBoolean sRunning = new AtomicBoolean(false);
 
     private final Context mContext;
     private final ContactsManager mManager;
 
+    private ContentObserver mContentObserver;
+    private ContactsChangedListener mContactsChangedListener;
+
     public ContactsContentObserver(final ContactsManager manager, final Context context) {
         mManager = manager;
         mContext = context;
@@ -55,7 +57,6 @@
         mContentObserver = new ContentObserver(null /* handler */) {
             @Override
             public void onChange(boolean self) {
-                // TODO(zivkovic): Limit the queue to 1 instance of ContactsContentObserver.
                 ExecutorUtils.getExecutorForDynamicLanguageModelUpdate()
                         .execute(ContactsContentObserver.this);
             }
@@ -66,12 +67,19 @@
 
     @Override
     public void run() {
+        if (!sRunning.compareAndSet(false /* expect */, true /* update */)) {
+            if (DEBUG) {
+                Log.d(TAG, "run() : Already running. Don't waste time checking again.");
+            }
+            return;
+        }
         if (haveContentsChanged()) {
             if (DEBUG) {
-                Log.d(TAG, "Contacts have changed; notifying listeners");
+                Log.d(TAG, "run() : Contacts have changed. Notifying listeners.");
             }
             mContactsChangedListener.onContactsChange();
         }
+        sRunning.set(false);
     }
 
     private boolean haveContentsChanged() {
