• 技术文章 >Java >java教程

    Java中Thread.start()和Thread.run()之间的区别

    青灯夜游青灯夜游2019-01-24 15:00:18原创4398
    在Java的多线程概念中,start()和run()是两个最重要的方法。那么它们之间的区别是什么?下面本篇文章就来带大家认识一下start()和run()方法,介绍它们之间的区别,希望对大家有所帮助。

    Java中的start()方法

    线程类的start()方法可以用来启动线程;该方法会在内部调用Runnable接口的run()方法,以在单独的线程中执行run()方法中指定的代码。【视频教程推荐:Java教程

    start()方法启动线程执行以下任务:

    ● 它统计了一个新线程

    ● 线程从New State移动到Runnable状态。

    ● 当线程有机会执行时,它的目标run()方法将运行。

    Java中的run()方法

    线程类的run()方法是Runnable接口的一个抽象方法,由java虚拟机直接调用的,不会创建的新线程。

    start()方法和run()方法的区别

    1、方法的定义

    start()方法在java.lang.Thread类中定义;而,run()方法在java.lang.Runnable接口中定义,必须在实现类中重写。

    2、新线程创建

    当程序调用start()方法时,会创建一个新线程,然后执行run()方法。但是如果我们直接调用run()方法,则不会创建新的线程,run()方法将作为当前调用线程本身的常规方法调用执行,并且不会发生多线程。

    示例:

    class MyThread extends Thread { 
        public void run() 
        { 
    System.out.println("\n"); 
            System.out.println("当前线程的名称: "
                               + Thread.currentThread().getName()); 
            System.out.println("run()方法调用"); 
        } 
    } 
      
    class demo { 
        public static void main(String[] args) 
        { 
            MyThread t = new MyThread(); 
            t.start(); 
        } 
    }

    输出:

    2.jpg

    正如我们在上面的例子中所看到的,当我们调用线程类实例的start()方法时,会创建一个新的线程,默认名称为Thread-0,然后调用run()方法,并在其中执行所有内容。新创建的线程。

    现在,让我们尝试直接调用run()方法而不是start()方法:

    class MyThread extends Thread { 
        public void run() 
        { 
    System.out.println("\n"); 
            System.out.println("当前线程的名称: "
                               + Thread.currentThread().getName()); 
      
            System.out.println("run()方法调用"); 
        } 
    } 
      
    class GeeksforGeeks { 
        public static void main(String[] args) 
        { 
            MyThread t = new MyThread(); 
            t.run(); 
        } 
    }

    输出:

    3.jpg

    正如我们在上面的例子中所看到的,当我们调用MyThread类的run()方法时,没有创建新线程,并且在当前线程即主线程上执行run()方法。因此,没有发生多线程。run()方法是作为正常函数被调用。

    3、多次调用

    start()方法不能多次调用,否则抛出java.lang.IllegalStateException;而,run()方法可以进行多次调用,因为它只是一种正常的方法调用。

    以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

    以上就是Java中Thread.start()和Thread.run()之间的区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:Java start() run()
    上一篇:Java如何创建和填充PDF表单域(代码示例) 下一篇:如何在JSP页面内编写java代码?(代码示例)
    大前端线上培训班

    相关文章推荐

    • 再谈JavaScript线程_javascript技巧• php三种实现多线程类似的方法_php技巧• php多线程实现方法及用法实例详解_php技巧• 如何解决PHP无法实现多线程的问题_php技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网