Java多线程(三)线程的调度

一、线程调度顺序

前提: 如果一个进程中同时开三个线程,那么谁先谁后呢?

    代码实现案例:
/**
 * 测试线程的执行顺序
 */
public class TestThreadSort implements Runnable{
          
   
    public static void main(String[] args) {
          
   
        //使用实现Runnable方法的好处就是可以多实现
        TestThreadSort testThreadSort = new TestThreadSort();

        //开启线程1
        new Thread(testThreadSort,"丁大大").start();
        //开启线程2
        new Thread(testThreadSort,"甲大大").start();
        //开启线程3
        new Thread(testThreadSort,"乙大大").start();
    }

    @Override
    public void run() {
          
   
        //Thread.currentThread().getName() ---获取当前线程的名称
        for (int i=0;i<100;i++){
          
   
            System.out.println(Thread.currentThread().getName()+"看了第"+i+"本书");
        }
    }
}
    执行结果如下: 注意项: 开启一个线程时,即new Thread(实例化对象,name),为开启的线程取了一个名字。 在线程内部可使用Thread.currentThread().getName() 获取该线程本身的名称。 小结: 通过以上的代码执行结果来看,我们可以得出结论,线程的执行并不是按照指定的顺序来,比如我依次开启线程1、2、3,但实际的执行结果并不受我们的控制,而是由cpu调度器随机调度执行的!

二、主线程的执行

    代码实现案例 理论上结果:等待三个人看完,最后才是老师看书。 实际结果如下: 结论:主线程(main()线程)优先执行。

Java多线程扩展:

经验分享 程序员 微信小程序 职场和发展