在 java 中继承 thread 类需要定义一个子类并重写其 run() 方法,通过实例化该子类并调用 start() 方法来启动新线程。这种方式直接扩展了线程的行为,但受限于 java 单继承机制,若需同时继承其他业务父类则无法使用。

如何重写 run 方法实现自定义逻辑
必须覆盖 run() 方法并将核心业务代码放入其中,因为这是线程启动后实际执行的入口点。调用 start() 会触发 JVM 创建新的执行栈并异步执行 run(),而直接调用 run() 仅会在当前线程同步执行普通方法调用。

public class MyThread extends Thread {
@Override
public void run() {
System.out.println("子线程执行: " + Thread.currentThread().getName());
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start(); // 启动新线程
}
}
继承 Thread 与实现 Runnable 的区别是什么
继承 Thread 使类本身成为线程对象,适合独立线程场景;实现 Runnable 将任务与线程解耦,支持多个线程共享同一任务实例,且保留了继承其他类的灵活性。两者在底层都依赖 Thread 的 target.run() 执行逻辑,但设计意图不同。
立即学习“Java免费学习笔记(深入)”;

// Runnable 方式对比
public class Task implements Runnable {
@Override
public void run() {
System.out.println("任务执行");
}
}
// 使用
new Thread(new Task()).start();
为什么不建议直接调用 start 后的 run 方法
直接调用 run() 不会创建新线程,而是作为普通方法在当前主线程中同步执行,导致并发失效。只有 start() 能通知 JVM 调度器分配新栈空间,确保代码在独立线程中运行。


















