为什么我运行以后是 男演员第0次 男演员第1次 男演员第2次 男演员第3次 男演员第4次 女演员第0次 男演员第5次 女演员第1次 女演员第2次 男演员第6次 是电脑配置(双核之类的区别)导致的线程运行不一样吗?
线程的原理是,把CPU的一个核心,在时间上分成很多极短的时间片,每个时间片处理一个线程的一部分,当一个时间片完成后,下一个时间片可能选择任何一个有条件运行的线程来执行。
例如,有a,b两个线程,各自有10个语句,记为a1-a10和b1-b10,且都没有阻塞
假如我们执行
a.start(); b.start();
因为a先start,通常会先执行a1,当a1执行完,且b也已经start过后,下一个可能执行a2,也可能执行b1,具体执行谁由程序本身根据CPU状况决定,程序员无法指定。因此像是视频中的程序,哪怕是在同一台电脑上,每次运行结果也可能不同。
因为线程运行需要争用CPU,因此每次运行的结果都有可能不同,同一台电脑尚且如此,不同的电脑,不同的CPU就更不用说了