#-*-encoding:utf-8-*-
import threading
import time
exitFlag = 0
class myThread(threading.Thread):
def __init__(self, threadID, name, delay):#用delay模拟运行时间
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.delay = delay
def run(self):
print("Starting", self.name)
threadLock.acquire()#获得锁,成功锁定后返回true
print_time(self.name, self.delay, 5)
threadLock.release()#释放锁,开启下一个线程
print("Exiting",self.name)
def print_time(threadName, delay, counter):
while counter:
if exitFlag:
threadName.exit()
time.sleep(delay)
print("%s:%s"%(threadName, time.ctime(time.time())))
counter -= 1
threadLock = threading.Lock()
threads = []
#创建线程
thread1 = myThread(1, "thread-1", 1)
thread2 = myThread(2, "thread-2", 1)
thread3 = myThread(3, "Thread-3", 1)
thread4 = myThread(4, "Thread-4", 1)
#开启线程
thread1.start()
thread2.start()
thread3.start()
thread4.start()
#添加线程到线程列表
print("%s添加到线程列表"%thread1.name)
threads.append(thread1)
threads.append(thread2)
#等待所有线程完成join方法,如果一个线程或者一个函数在执行过程中要调用另外一个线程,
#并且待到其完成以后才能接着执行,那么在调用这个线程时可以使用被调用线程的join方法。
for t in threads:
print("等待%s线程完成"%thread1.name)
t.join()
print("退出主线程")