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(); } }
输出:
正如我们在上面的例子中所看到的,当我们挪用线程类实例的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(); } }
输出:
正如我们在上面的例子中所看到的,当我们挪用MyThread类的run()要领时,没有建立新线程,而且在当前线程即主线程上实行run()要领。因而,没有发作多线程。run()要领是作为一般函数被挪用。
3、屡次挪用
start()要领不能屡次挪用,不然抛出java.lang.IllegalStateException;而,run()要领能够举行屡次挪用,由于它只是一种一般的要领挪用。
以上就是本篇文章的全部内容,愿望能对人人的进修有所协助。更多精彩内容人人能够关注ki4网相干教程栏目!!!
以上就是Java中Thread.start()和Thread.run()之间的区分的细致内容,更多请关注ki4网别的相干文章!