run() 方法:
run() 方法是 Thread 类的一个普通方法,用于定义线程的主体逻辑。当直接调用 run() 方法时,该方法会在当前线程的上下文中执行,而不会创建新的线程。
直接调用 run() 方法,不会实现多线程的并发执行,而只是在当前线程中按照顺序执行 run() 方法的内容。
public class MyRunnable implements Runnable {
@Override
public void run() {
// 线程的主体逻辑
System.out.println("Running in thread: " + Thread.currentThread().getName());
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
myRunnable.run(); // 在当前线程中执行 run() 方法
}
}
start() 方法:
start() 方法是 Thread 类的一个方法,用于启动一个新的线程。当调用 start() 方法时,会创建一个新的线程,并在新线程的上下文中执行 run() 方法的内容。
直接调用 start() 方法会导致新线程的创建和执行,实现多线程并发执行。
public class MyThread extends Thread {
@Override
public void run() {
// 线程的主体逻辑
System.out.println("Running in thread: " + Thread.currentThread().getName());
}
}
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start(); // 启动一个新的线程,执行 run() 方法
}
}
区别总结:
run() 方法是定义线程主体逻辑的普通方法,当直接调用时,它在当前线程的上下文中执行,而不会创建新的线程。
start() 方法是启动一个新线程的方法,当调用时,它会创建一个新的线程,并在新线程的上下文中执行 run() 方法的内容,实现多线程并发执行。
直接调用 run() 方法不会创建新线程,只是在当前线程中按顺序执行 run() 方法的内容,不具备多线程的特性。
在使用多线程时,通常应该调用 start() 方法来启动新线程,以实现并发执行,而不是直接调用 run() 方法。
结语
标签:run,start,线程,多线程,方法,public From: https://www.cnblogs.com/java-six/p/18438300在Java中,run() 方法和 start() 方法代表着多线程编程的两种不同方式。run() 作为线程的主体逻辑定义,当直接调用时在当前线程中执行;而 start() 用于启动新线程,创建新的执行上下文,并在其中执行 run() 方法,实现多线程的并发执行。正确使用这两个方法是编写高效、可靠多线程代码的关键。在设计多线程应用时,请根据需求选择适当的方式,确保线程安全和良好的性能。希望通过对 run() 和 start() 的深入理解,你能够更加自信和熟练地处理多线程编程的挑战。