'''
多个子线程执行相同代码,先开的子线程不一定先执行完毕,如果子线程内有IO操作/time.sleep等
IO操作/time.sleep会导致子线程切出到其他线程(包括主线程)
如果没有引起线程切换,则顺序执行完毕
进程/线程切换原则
1 时间片
2 遇到io操作切换
3 优先级切换
'''
import time,threading
l=[]
class MyThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global l
#可将此句取消注释对比运行结果
# time.sleep(0.0000000000001)
#将当前线程名添加到列表l
l.append(self.getName())
for i in range(50):
t=MyThread()
t.start()
l.append('主线程')
#不确定join是否干扰子线程运行,用sleep保证子线程运行完毕
time.sleep(2)
print(l)