当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-为什么调用start()方法时会执行run()方法,那怎么不直接调用run()方法?

金三银四精选java面试题-为什么调用start()方法时会执行run()方法,那怎么不直接调用run()方法?

来源:图灵教育
时间:2023-12-29 10:48:50
 

为什么调用start()方法时会执行run()方法,那怎么不直接调用run()方法?

JVM执行start方法,会先创建一个线程,由创建出来的新线程去执行thread的run方法,这才起到多线程的效果。

start()和run()的主要区别如下:

  • start方法可以启动一个新线程,run方法只是类的一个普通方法而已,如果直接调用run方法,程序中依然只有主线程这一个线程。
  • start方法实现了多线程,而run方法没有实现多线程。
  • start不能被重复调用,而run方法可以。
  • start方法中的run代码可以不执行完,就继续执行下面的代码,也就是说进行了线程切换。然而,如果直接调用run方法,就必须等待其代码全部执行完才能继续执行下面的代码。
/**
 * Created by BaiLi
 */
public class BaiLiDemo {
    public static void main(string[] args) {
        Thread thread = new Thread(() -> System.out.println(Thread.currentThread().getName()+":一键三连"));
        thread.start();
        thread.run();
        thread.run();
        System.out.println(Thread.currentThread().getName()+":一键三连 + 分享");
    }
}