diff --git a/tests/mobly/utils_test.py b/tests/mobly/utils_test.py
index e4dca9c..0b033e3 100755
--- a/tests/mobly/utils_test.py
+++ b/tests/mobly/utils_test.py
@@ -22,6 +22,7 @@
 import sys
 import subprocess
 import tempfile
+import threading
 import time
 from future.tests.base import unittest
 
@@ -240,9 +241,11 @@
 
     def test_concurrent_exec_when_exception_makes_all_calls(self):
         mock_call_recorder = mock.MagicMock()
+        lock_call_count = threading.Lock()
 
         def fake_int(a, ):
-            mock_call_recorder(a)
+            with lock_call_count:
+                mock_call_recorder(a)
             return int(a)
 
         results = utils.concurrent_exec(fake_int, [
@@ -263,9 +266,11 @@
 
     def test_concurrent_exec_when_exception_generates_results(self):
         mock_call_recorder = mock.MagicMock()
+        lock_call_count = threading.Lock()
 
         def fake_int(a, ):
-            mock_call_recorder(a)
+            with lock_call_count:
+                mock_call_recorder(a)
             return int(a)
 
         results = utils.concurrent_exec(fake_int, [
@@ -287,9 +292,11 @@
 
     def test_concurrent_exec_when_multiple_exceptions_makes_all_calls(self):
         mock_call_recorder = mock.MagicMock()
+        lock_call_count = threading.Lock()
 
         def fake_int(a, ):
-            mock_call_recorder(a)
+            with lock_call_count:
+                mock_call_recorder(a)
             return int(a)
 
         results = utils.concurrent_exec(fake_int, [
@@ -310,9 +317,11 @@
 
     def test_concurrent_exec_when_multiple_exceptions_generates_results(self):
         mock_call_recorder = mock.MagicMock()
+        lock_call_count = threading.Lock()
 
         def fake_int(a, ):
-            mock_call_recorder(a)
+            with lock_call_count:
+                mock_call_recorder(a)
             return int(a)
 
         results = utils.concurrent_exec(fake_int, [
@@ -345,9 +354,11 @@
 
     def test_concurrent_exec_when_raising_exception_makes_all_calls(self):
         mock_call_recorder = mock.MagicMock()
+        lock_call_count = threading.Lock()
 
         def fake_int(a, ):
-            mock_call_recorder(a)
+            with lock_call_count:
+                mock_call_recorder(a)
             return int(a)
 
         with self.assertRaisesRegex(RuntimeError, '.*not_int.*'):
@@ -371,9 +382,11 @@
     def test_concurrent_exec_when_raising_multiple_exceptions_makes_all_calls(
             self):
         mock_call_recorder = mock.MagicMock()
+        lock_call_count = threading.Lock()
 
         def fake_int(a, ):
-            mock_call_recorder(a)
+            with lock_call_count:
+                mock_call_recorder(a)
             return int(a)
 
         with self.assertRaisesRegex(
