线程运行规则?

来源:2-3 Java线程-隋唐演义实战开发---演员简介

aigougou

2016-03-24 12:34

为什么我运行以后是 男演员第0次 男演员第1次 男演员第2次 男演员第3次 男演员第4次 女演员第0次 男演员第5次 女演员第1次 女演员第2次 男演员第6次 是电脑配置(双核之类的区别)导致的线程运行不一样吗?

写回答 关注

2回答

  • changrui0608
    2016-04-09 10:18:41

    线程的原理是,把CPU的一个核心,在时间上分成很多极短的时间片,每个时间片处理一个线程的一部分,当一个时间片完成后,下一个时间片可能选择任何一个有条件运行的线程来执行。

    例如,有a,b两个线程,各自有10个语句,记为a1-a10和b1-b10,且都没有阻塞

    假如我们执行

    a.start();
    b.start();

    因为a先start,通常会先执行a1,当a1执行完,且b也已经start过后,下一个可能执行a2,也可能执行b1,具体执行谁由程序本身根据CPU状况决定,程序员无法指定。因此像是视频中的程序,哪怕是在同一台电脑上,每次运行结果也可能不同。

  • ZYeeC
    2016-03-24 13:17:40

    因为线程运行需要争用CPU,因此每次运行的结果都有可能不同,同一台电脑尚且如此,不同的电脑,不同的CPU就更不用说了

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题