thread模塊有一個join方法,主線程調用的時候是爲了等其餘線程結束再執行下面的代碼.python
比較下面的結果能夠看出來:ubuntu
root@VM-131-71-ubuntu:~/python# cat a.py import threading class x(threading.Thread): def __init__(self,i): self.a=i super(x,self).__init__() def run(self): print self.a a1=x(1) a2=x(2) a3=x(3) a1.start() #start會調用run方法 a2.start() a3.start() a1.join() #等a1的run方法執行完,再執行完下面的語句 a2.join() a3.join() print "xx" root@VM-131-71-ubuntu:~/python# python a.py 1 2 3 xx
root@VM-131-71-ubuntu:~/python# cat a.py import threading class x(threading.Thread): def __init__(self,i): self.a=i super(x,self).__init__() def run(self): print self.a a1=x(1) a2=x(2) a3=x(3) a1.start() a2.start() a3.start() print "xx" root@VM-131-71-ubuntu:~/python# python a.py 1 2 xx #xx輸出在3前面,說明沒有等a3對象的run方法執行完 3
join方法不能在start方法前,想一想看,若是join在start前,那麼就永遠在阻塞了spa