python Thread模塊 join方法

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

相關文章
相關標籤/搜索