文章目录
- 先说结论
- Run方法
- Start方法
先说结论
当你想要创建一个新的线程并执行某些任务时,你应该重写run方法以提供任务的具体实现,并通过调用start方法来启动新线程
run方法包含了线程应该执行的代码,但直接调用它并不会启动新的线程。
start方法用于启动新的线程,并在新线程中调用run方法。
Run方法
run方法是Thread类的一个普通方法,它包含了线程应该执行的代码。
当你创建一个新的线程时,你需要重写run方法,以提供线程应该执行的具体任务。
然而,直接调用run方法并不会启动新的线程。
相反,它只是在当前线程中顺序执行run方法中的代码,这与普通的方法调用没有区别。
Start方法
start方法是Thread类的一个特殊方法,用于启动一个新的线程。
当你调用start方法时,Java虚拟机(JVM)会创建一个新的线程,并在该线程中调用run方法。
这样,run方法中的代码就会在新的线程中并行执行,而不是在当前线程中顺序执行。
示例
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("Running in a new thread: " + Thread.currentThread().getName());
}
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start(); // 启动新线程
System.out.println("Running in the main thread: " + Thread.currentThread().getName());
}
}
创建了一个名为MyThread的类,它继承自Thread类并重写了run方法。
在main方法中,创建了MyThread的一个实例,并调用其start方法来启动一个新的线程。
同时,我们在main方法中打印了当前线程(即主线程)的名称。
运行这个程序,会看到两个线程(主线程和新线程)并行执行并打印出它们的名称。
- run方法定义了线程要执行的任务,但直接调用它不会创建新线程。
- start方法用于启动线程,它会导致JVM创建一个新的线程来执行该线程的run方法。
- 要创建并启动线程,应该重写run方法以定义线程的行为,并通过调用start方法来启动线程。
通过正确使用start方法而不是直接调用run方法,可以充分利用Java的多线程功能,实现并行处理任务,提高程序的性能和响应能力。