全文概要
这篇博客主要讲述多线程中start()方法和run()方法的区别。
线程中start()/run()方法的区别
start():该方法是在当前线程中启动一个新的线程,而新启动的线程会调用run()方法,同时该方法不能重复调用;
run() :该方法和普通的方法一样,可以重复执行,不会创建新的线程。
下面以一个小的代码案例来说明:
package com.tml.javaCore.thread;
/**
* <p>线程start()/run()方法比较
* @author Administrator
*
*/
public class StartAndRunDemo {
public static void main(String[] args) {
Thread t1 = new MyThread("thread_01");
System.out.println("run() ....");
t1.run();
System.out.println("start() ....");
t1.start();
//run()方法可以重复执行
//t1.run();
//start()方法不能重复执行,重复执行会抛出java.lang.IllegalThreadStateException
//t1.start();
}
static class MyThread extends Thread{
public MyThread(String name){
super(name);
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " is running!");
}
}
}
说明总结
上面代码输出的结果是:
run() ....
main is running!
start() ....
thread_01 is running!
main is running!
start() ....
thread_01 is running!
由此可以看出:
- 在main方法中执行的run()方法不会创建新的线程,而在main方法中执行的start()方法会启动一个新的线程,新的线程会调用run方法
- run方法可以多次执行,但是start方法不允许多次执行,多次执行start()方法会抛出一个一个运行时异常java.lang.IllegalThreadStateException