java使用run和start后的线程引用

public class ThreadDemo extends Thread {
    @Override
    public void run() {
        for(int i = 0; i <= 5; i++) {
            try {
                System.out.println(currentThread().getName() + "---" + i);
                sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        ThreadDemo t = new ThreadDemo();
        t.setName("t");
        t.start();  //打印的是t线程
        t.run();    //打印主线程main
    }
}
结果:
java使用run和start后的线程引用_第1张图片

 

 

 分析:

 1 程序运行开始,jvm会自动创建线程main,也就是主线程
2 主线程在执行代码时,创建一个线程,当线程调用start()后,就启用了线程,
主线程继续往下执行代码。被启用的线程内部会自动调用run方法(start0() 本地方法或者说底层操作系统),
所以此时run方法是在该线程内运行
3 实例.run()仅仅只是调用对象的方法,与普通方法无差别,并没有启动新的线程,所以该方法还是在main线程内使用

你可能感兴趣的:(java使用run和start后的线程引用)