diff --git a/tests/dhtrunnertester.cpp b/tests/dhtrunnertester.cpp
index 606aa7cdcb7ea25edb9c79c25520289b2ff61c1f..b3dcbe003767223f8ca89c6842ec44c953113d17 100644
--- a/tests/dhtrunnertester.cpp
+++ b/tests/dhtrunnertester.cpp
@@ -19,6 +19,8 @@
 
 #include "dhtrunnertester.h"
 
+#include <opendht/thread_pool.h>
+
 #include <chrono>
 #include <mutex>
 #include <condition_variable>
@@ -298,4 +300,39 @@ DhtRunnerTester::testListenLotOfBytes() {
     node3.cancelListen(foo, ftokenfoo.get());
 }
 
+
+void
+DhtRunnerTester::testMultithread() {
+    std::mutex mutex;
+    std::condition_variable cv;
+    unsigned putCount(0);
+    unsigned putOkCount(0);
+
+    constexpr unsigned N = 2048;
+
+    for (unsigned i=0; i<N; i++) {
+        dht::ThreadPool::computation().run([&]{
+            node2.put(dht::InfoHash::get("123" + std::to_string(i)), "hehe", [&](bool ok) {
+                std::lock_guard<std::mutex> lock(mutex);
+                putCount++;
+                if (ok) putOkCount++;
+                cv.notify_all();
+            });
+            node2.get(dht::InfoHash::get("123" + std::to_string(N-i-1)), [](const std::shared_ptr<dht::Value>&){
+                return true;
+            }, [&](bool ok) {
+                std::lock_guard<std::mutex> lock(mutex);
+                putCount++;
+                if (ok) putOkCount++;
+                cv.notify_all();
+            });
+        });
+    }
+    std::unique_lock<std::mutex> lk(mutex);
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]{ return putCount == 2*N; }));
+    CPPUNIT_ASSERT_EQUAL(2*N, putOkCount);
+
+}
+
+
 }  // namespace test
diff --git a/tests/dhtrunnertester.h b/tests/dhtrunnertester.h
index 765f1cb627f50303d8a225fb8c26e6fc6b183a63..adee2b28c31270b8dec27324ef8dc9b422878183 100644
--- a/tests/dhtrunnertester.h
+++ b/tests/dhtrunnertester.h
@@ -67,6 +67,11 @@ class DhtRunnerTester : public CppUnit::TestFixture {
      * Test listen method with lot of datas
      */
     void testListenLotOfBytes();
+    /**
+     * Test multithread
+     */
+    void testMultithread();
+
 };
 
 }  // namespace test