bpo-31639: Use threads in http.server module. (GH-5018)

(cherry picked from commit 8bcfa02e4b1b65634e526e197588bc600674c80b)

Co-authored-by: Julien Palard <julien@palard.fr>
diff --git a/Lib/http/server.py b/Lib/http/server.py
index 502bce0..a2726ab 100644
--- a/Lib/http/server.py
+++ b/Lib/http/server.py
@@ -83,7 +83,7 @@
 __version__ = "0.6"
 
 __all__ = [
-    "HTTPServer", "BaseHTTPRequestHandler",
+    "HTTPServer", "ThreadedHTTPServer", "BaseHTTPRequestHandler",
     "SimpleHTTPRequestHandler", "CGIHTTPRequestHandler",
 ]
 
@@ -140,6 +140,10 @@
         self.server_port = port
 
 
+class ThreadedHTTPServer(socketserver.ThreadingMixIn, HTTPServer):
+    daemon_threads = True
+
+
 class BaseHTTPRequestHandler(socketserver.StreamRequestHandler):
 
     """HTTP request handler base class.
@@ -1213,7 +1217,8 @@
 
 
 def test(HandlerClass=BaseHTTPRequestHandler,
-         ServerClass=HTTPServer, protocol="HTTP/1.0", port=8000, bind=""):
+         ServerClass=ThreadedHTTPServer,
+         protocol="HTTP/1.0", port=8000, bind=""):
     """Test the HTTP request handler class.
 
     This runs an HTTP server on port 8000 (or the port argument).