在Java中, run() 和 start() 方法是Thread类的两个关键方法,它们有本质区别:
1.run()方法:
- run()方法是线程要执行的任务代码所在的方法。
- 直接调用run()方法,它会在当前线程中执行,而不会启动新的线程。也就是说,它就像普通的实例方法一样被调用,并没有多线程的特性。
2.start()方法
start()方法用于启动一个新的线程。当调用start()方法时,Java虚拟机会创建一个新的线程,然后在这个新线程中调用run()方法。
代码演示:
class MyThread extends Thread{ @Override public void run() { System.out.println("当前线程是"+Thread.currentThread().getName()); } } public class demo1 { public static void main(String[] args) { Thread t1=new MyThread(); System.out.println("直接调用run()方法"); t1.run(); System.out.println("直接调用start()方法"); t1.start(); } }运行结果:
总结:
- 调用start()方法会启动一个新线程,并在这个线程中执行run()方法,函数在调用后会立即返回,不需要等待线程执行完成。
- 调用run()方法则不会启动新线程,而是在当前线程中同步执行run()方法,函数也需要在方法执行完毕后才会返回。
注意start()只能执行一次,run()可以反复多次执行。