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

浙公网安备 33010602011771号