课程
/后端开发
/Java
/深入浅出Java多线程
为什么我运行以后是 男演员第0次 男演员第1次 男演员第2次 男演员第3次 男演员第4次 女演员第0次 男演员第5次 女演员第1次 女演员第2次 男演员第6次 是电脑配置(双核之类的区别)导致的线程运行不一样吗?
2016-03-24
源自:深入浅出Java多线程 2-3
正在回答
线程的原理是,把CPU的一个核心,在时间上分成很多极短的时间片,每个时间片处理一个线程的一部分,当一个时间片完成后,下一个时间片可能选择任何一个有条件运行的线程来执行。
例如,有a,b两个线程,各自有10个语句,记为a1-a10和b1-b10,且都没有阻塞
假如我们执行
a.start(); b.start();
因为a先start,通常会先执行a1,当a1执行完,且b也已经start过后,下一个可能执行a2,也可能执行b1,具体执行谁由程序本身根据CPU状况决定,程序员无法指定。因此像是视频中的程序,哪怕是在同一台电脑上,每次运行结果也可能不同。
因为线程运行需要争用CPU,因此每次运行的结果都有可能不同,同一台电脑尚且如此,不同的电脑,不同的CPU就更不用说了
举报
带你一起深入浅出多线程,掌握基础,展望进阶路线
2 回答线程并不能交替运行
3 回答军队线程1 和 农民军线程2 他们两都运行了多少次呢???
1 回答线程wait的执行顺序
1 回答当一个线程run()启动之后,是不是至少运行一次?
2 回答请教一下呢,run方法调用和线程运行顺序的问题