欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Java线程启动为什么要用start()而不是run()?

时间:2022-07-14 08:18:29|栏目:JAVA代码|点击:

1、直接调用线程的run()方法

public class TestStart {
    public static void main(String[] args) throws InterruptedException {
       Thread t1 = new Thread(){

           @Override
           public void run() {
               System.out.println("Thread t1 is working..."+System.currentTimeMillis());
               try {
                   Thread.sleep(1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
       };
       t1.run();
       Thread.sleep(2000);
       System.out.println("Thread Main is doing other thing..."+System.currentTimeMillis());
    }
}

可以看到主线程在t1.run()运行之后再过三秒才继续运行,也就是说,直接在主方法中调用线程的run()方法,并不会开启一个线程去执行run()方法体内的内容,而是同步执行。

2、调用线程的start()方法

public class TestStart {
    public static void main(String[] args) throws InterruptedException {
       Thread t1 = new Thread(){

           @Override
           public void run() {
               System.out.println("Thread t1 is working..."+System.currentTimeMillis());
               try {
                   Thread.sleep(1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
       };
       t1.start();
       Thread.sleep(2000);
       System.out.println("Thread Main is doing other thing..."+System.currentTimeMillis());
    }
}

startVSrun1.JPG 可以看到在,在执行完t1.start()这一行之后,主线程立马继续往下执行,休眠2s后输出内容。 也就是说,t1线程和主线程是异步执行的,主线程在线程t1的start()方法执行完成后继续执行后面的内容,无需等待run()方法体的内容执行完成。

3、总结

  • 1、开启一个线程必须通过start()方法,直接调用run()方法并不会创建线程,而是同步执行run()方法中的内容。
  • 2、如果通过传入一个Runnable对象创建线程,线程会执行Runnable对象的run()方法;否则执行自己本身的run()方法。
  • 3、不管是实现Runnable接口还是继承Thread对象,都可以重写run()方法,达到执行设定的任务的效果。

上一篇:@Transactional注解:多个事务嵌套时,独立事务处理方式

栏    目:JAVA代码

下一篇:解决Spring配置文件中bean的property属性中的name出错问题

本文标题:Java线程启动为什么要用start()而不是run()?

本文地址:http://www.codeinn.net/misctech/207764.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有