您的当前位置:首页正文

Thread 类中的start() 和 run() 方法有什么区别?

来源:九壹网

start()run() 方法是 Java 中 Thread 类中的两个重要方法,它们有着关键的区别:

  • start() 方法用于启动一个新线程,并让这个线程执行其对应的 run() 方法。
  • 当调用 start() 方法时,会创建一个新的线程,并在新线程的上下文中执行 run() 方法。
  • 调用 start() 方法后,不应直接再次调用 run() 方法,否则 run() 方法会在当前线程的上下文中执行,而不会开启新线程。
Thread thread = new Thread(() -> {
    // 线程的执行逻辑
});

thread.start(); // 启动新线程并执行 run() 方法

  2.run() 方法:

  • run() 方法定义了线程的执行逻辑,包含了线程具体要执行的代码。
  • 如果直接调用 run() 方法,它会在当前线程的上下文中执行,就像调用普通的方法一样,并不会创建新线程。
    Thread thread = new Thread(() -> {
        // 线程的执行逻辑
    });
    
    thread.run(); // 在当前线程上执行 run() 方法,不会开启新线程
    

    总结来说,start() 方法用于启动一个新的线程并执行线程的 run() 方法,而 run() 方法仅仅是定义了线程的执行逻辑,在调用 start() 方法后由新线程执行,直接调用 run() 方法则是在当前线程中执行,不会创建新线程。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top