线程执行顺序

代码:

/**
 * @author cheyuhang on 2021/5/6
 */
public class Test1 {
    public static void main(String[] args) {
        new Thread(()-> {
            try {
                TimeUnit.SECONDS.sleep(3L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("子线程执行");
        },"A").start();

        System.out.println("cheyuhang");
        try {
            TimeUnit.SECONDS.sleep(10L);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("sadffffffffffffffffffffffffffffffff");
    }
}

执行结果:

cheyuhang
子线程执行
sadffffffffffffffffffffffffffffffff

执行过程解释:

首先程序的执行顺序是自上而下的,先执行A线程,因为A线程睡了3秒,所以会继续执行往下执行main线程,会输出"cheyuhang",然后继续执行主线程的睡10s的操作,后续操作就停止了,此时A线程睡的时间已经到了,就会输出"子线程执行", 此时主线程睡10s时间到了,继续执行后续的操作,那么就会输出"sadffffffffffffffffffffffffffffffff"