diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index 9b91b9c..ae001db 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -262,7 +262,7 @@
         self.relativeCreated = (self.created - _startTime) * 1000
         if logThreads and thread:
             self.thread = thread.get_ident()
-            self.threadName = threading.current_thread().get_name()
+            self.threadName = threading.current_thread().name
         else:
             self.thread = None
             self.threadName = None
diff --git a/Lib/multiprocessing/managers.py b/Lib/multiprocessing/managers.py
index ba5af57..160c1cc 100644
--- a/Lib/multiprocessing/managers.py
+++ b/Lib/multiprocessing/managers.py
@@ -201,7 +201,7 @@
         Handle requests from the proxies in a particular process/thread
         '''
         util.debug('starting server thread to service %r',
-                   threading.current_thread().get_name())
+                   threading.current_thread().name)
 
         recv = conn.recv
         send = conn.send
@@ -251,7 +251,7 @@
 
             except EOFError:
                 util.debug('got EOF -- exiting thread serving %r',
-                           threading.current_thread().get_name())
+                           threading.current_thread().name)
                 sys.exit(0)
 
             except Exception:
@@ -264,7 +264,7 @@
                     send(('#UNSERIALIZABLE', repr(msg)))
             except Exception, e:
                 util.info('exception in thread serving %r',
-                        threading.current_thread().get_name())
+                        threading.current_thread().name)
                 util.info(' ... message was %r', msg)
                 util.info(' ... exception was %r', e)
                 conn.close()
@@ -386,7 +386,7 @@
         '''
         Spawn a new thread to serve this connection
         '''
-        threading.current_thread().set_name(name)
+        threading.current_thread().name = name
         c.send(('#RETURN', None))
         self.serve_client(c)
 
@@ -700,8 +700,8 @@
     def _connect(self):
         util.debug('making connection to manager')
         name = current_process().get_name()
-        if threading.current_thread().get_name() != 'MainThread':
-            name += '|' + threading.current_thread().get_name()
+        if threading.current_thread().name != 'MainThread':
+            name += '|' + threading.current_thread().name
         conn = self._Client(self._token.address, authkey=self._authkey)
         dispatch(conn, None, 'accept_connection', (name,))
         self._tls.connection = conn
@@ -714,7 +714,7 @@
             conn = self._tls.connection
         except AttributeError:
             util.debug('thread %r does not own a connection',
-                       threading.current_thread().get_name())
+                       threading.current_thread().name)
             self._connect()
             conn = self._tls.connection
 
@@ -775,7 +775,7 @@
         # the process owns no more references to objects for this manager
         if not idset and hasattr(tls, 'connection'):
             util.debug('thread %r has no more proxies so closing conn',
-                       threading.current_thread().get_name())
+                       threading.current_thread().name)
             tls.connection.close()
             del tls.connection
 
diff --git a/Lib/multiprocessing/queues.py b/Lib/multiprocessing/queues.py
index 7235a41..bfb5f09 100644
--- a/Lib/multiprocessing/queues.py
+++ b/Lib/multiprocessing/queues.py
@@ -155,7 +155,7 @@
                   self._wlock, self._writer.close),
             name='QueueFeederThread'
             )
-        self._thread.set_daemon(True)
+        self._thread.daemon = True
 
         debug('doing self._thread.start()')
         self._thread.start()
diff --git a/Lib/test/test_dummy_threading.py b/Lib/test/test_dummy_threading.py
index ce248a2..2f59d5f 100644
--- a/Lib/test/test_dummy_threading.py
+++ b/Lib/test/test_dummy_threading.py
@@ -16,7 +16,7 @@
             #delay = random.random() * 2
             delay = 0
             if test_support.verbose:
-                print 'task', self.get_name(), 'will run for', delay, 'sec'
+                print 'task', self.name, 'will run for', delay, 'sec'
             sema.acquire()
             mutex.acquire()
             running += 1
@@ -25,11 +25,11 @@
             mutex.release()
             time.sleep(delay)
             if test_support.verbose:
-                print 'task', self.get_name(), 'done'
+                print 'task', self.name, 'done'
             mutex.acquire()
             running -= 1
             if test_support.verbose:
-                print self.get_name(), 'is finished.', running, 'tasks are running'
+                print self.name, 'is finished.', running, 'tasks are running'
             mutex.release()
             sema.release()
 
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index 95570c2..63e34c6 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -670,7 +670,7 @@
 
             t = threading.Thread(target=self.f,
                                  args=(cond, sleeping, woken, TIMEOUT1))
-            t.set_daemon(True)
+            t.daemon = True
             t.start()
 
         # wait for them all to sleep
@@ -692,7 +692,7 @@
             p.start()
 
             t = threading.Thread(target=self.f, args=(cond, sleeping, woken))
-            t.set_daemon(True)
+            t.daemon = True
             t.start()
 
         # wait for them to all sleep
diff --git a/Lib/test/test_socketserver.py b/Lib/test/test_socketserver.py
index f6de8fa..b8f664f 100644
--- a/Lib/test/test_socketserver.py
+++ b/Lib/test/test_socketserver.py
@@ -139,7 +139,7 @@
             # Time between requests is short enough that we won't wake
             # up spuriously too many times.
             kwargs={'poll_interval':0.01})
-        t.set_daemon(True)  # In case this function raises.
+        t.daemon = True  # In case this function raises.
         t.start()
         if verbose: print "server running"
         for i in range(3):
