bpo-45187: Fix dangling threads in test_socket.CreateServerFunctionalTest (GH-28422)

(cherry picked from commit 51ebb7f4f5e9bdcf8279a1d91be9569706f6bead)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index b6da4d0..5c15648 100755
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -6492,13 +6492,6 @@ def test_dualstack_ipv6_family(self):
 class CreateServerFunctionalTest(unittest.TestCase):
     timeout = support.LOOPBACK_TIMEOUT
 
-    def setUp(self):
-        self.thread = None
-
-    def tearDown(self):
-        if self.thread is not None:
-            self.thread.join(self.timeout)
-
     def echo_server(self, sock):
         def run(sock):
             with sock:
@@ -6512,8 +6505,9 @@ def run(sock):
 
         event = threading.Event()
         sock.settimeout(self.timeout)
-        self.thread = threading.Thread(target=run, args=(sock, ))
-        self.thread.start()
+        thread = threading.Thread(target=run, args=(sock, ))
+        thread.start()
+        self.addCleanup(thread.join, self.timeout)
         event.set()
 
     def echo_client(self, addr, family):