java中通过继承thread类创建线程需重写run()方法并调用start()启动,直接调用run()仅同步执行于主线程;继承方式受限于单继承,推荐优先使用runnable接口。

Java 中通过继承 Thread 类创建新线程,核心是定义一个类继承 Thread,重写其 run() 方法,并调用 start() 启动线程。
继承 Thread 类并重写 run() 方法
自定义线程类需继承 Thread,并在其中实现业务逻辑——必须覆写 run() 方法(不是 start())。这个方法里写的是线程真正要执行的代码。
-
run()是线程的入口,但直接调用它只是普通方法调用,不会启动新线程 - 必须通过
start()方法触发 JVM 创建并调度新线程,之后自动调用该线程的run()
正确启动线程:调用 start() 而非 run()
常见误区是误调 run(),结果代码在主线程中同步执行,没达到并发效果。
示例:
class MyThread extends Thread {
public void run() {
System.out.println("线程 " + Thread.currentThread().getName() + " 正在运行");
}
}
public class Main {
public static void main(String[] args) {
MyThread t = new MyThread();
t.start(); // ✅ 正确:启动新线程
// t.run(); ❌ 错误:仅在主线程中执行,不新建线程
}
}
可选:通过构造函数传参或设置线程名
继承方式下,可通过自定义构造器传递参数,或调用 setName() 设置线程名,便于调试和识别。
- 构造器中可接收任务参数(如循环次数、数据对象等),保存为成员变量供
run()使用 - 调用
super("自定义名称")或setName("xxx")可指定线程名
注意:继承方式的局限性
Java 不支持多继承,一个类若已继承其他父类,就无法再继承 Thread。此时应改用实现 Runnable 或 Callable 接口的方式。
继承 Thread 适合简单场景;更推荐优先使用 Runnable + Thread 组合,解耦更清晰,扩展性更好。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











