直接继承thread类并重写run()方法是最基础的多线程创建方式,需调用start()启动新线程,不可重复调用start()或直接调用run()。

直接继承 Thread 类并重写 run() 方法,是最基础、最直观的多线程创建方式。它适合逻辑简单、与线程生命周期强绑定的场景。
继承 Thread 类的典型写法
你需要定义一个类,让它继承 Thread,然后覆盖 run() 方法,在里面写真正要并发执行的代码。注意:不能直接调用 run(),否则只是普通方法调用,仍在当前线程执行;必须调用 start() 才能启动新线程。
- 定义子类:例如 MyTask extends Thread
- 重写 run():把耗时或并行逻辑放在这里
- 创建实例后调用 start():JVM 会为其分配新栈,真正开启线程
常见误区与注意事项
很多初学者容易混淆 start() 和 run() 的作用:
- 调用 run() → 同步执行,无并发效果,相当于普通方法
- 重复调用 start() → 抛出 IllegalThreadStateException(一个线程只能启动一次)
- 无法多次复用同一个线程对象:线程运行结束就进入 TERMINATED 状态,不能再 start
一个可运行的小例子
下面是一个打印线程名和计数的简单实现:
class CounterThread extends Thread {
private final String name;
CounterThread(String name) {
this.name = name;
}
@Override
public void run() {
for (int i = 0; i
<p>输出顺序不固定,说明两个线程确实在并发执行。</p>
<h3>适用场景与局限性</h3>
<p>这种方式语义清晰,上手快,但有明显限制:</p>
- Java 不支持多继承,如果类已继承其他父类,就无法再继承 Thread
- 线程逻辑与 Thread 类耦合过重,不利于任务复用或统一调度
- 不适合需要返回结果或统一管理大量任务的场景(推荐用 Runnable + ExecutorService)











