Java中线程可通过继承Thread类或实现Runnable接口创建。1. 继承Thread类需重写run()方法并调用start()启动,但受限于单继承;2. 实现Runnable接口将实例传给Thread构造函数,更灵活且支持资源共享,推荐使用。关键点:start()开启新线程,直接调用run()仅是普通方法调用。

Java中线程的执行主要通过两种方式来实现:继承 Thread 类和实现 Runnable 接口。这两种方式都能创建并启动线程,但在使用场景和设计灵活性上有所不同。
1. 继承Thread类
Thread 类本身实现了 Runnable 接口,因此可以通过继承 Thread 类并重写其 run() 方法来定义线程执行的内容。
使用步骤:
- 创建一个类继承 Thread 类
- 重写 run() 方法,编写线程要执行的任务
- 创建该类的实例,并调用 start() 方法启动线程
示例代码:
立即学习“Java免费学习笔记(深入)”;
class MyThread extends Thread {
public void run() {
System.out.println("线程通过继承Thread执行");
}
}
// 启动线程
MyThread t = new MyThread();
t.start(); // 正确启动方式
2. 实现Runnable接口
更推荐的方式是让类实现 Runnable 接口,并将该实例传给 Thread 构造函数。这种方式避免了单继承的限制,更适合实际开发。
使用步骤:
- 定义类实现 Runnable 接口
- 实现 run() 方法
- 创建 Runnable 实现类的对象,并将其作为参数传递给 Thread 构造函数
- 调用 Thread 对象的 start() 方法启动线程
示例代码:
立即学习“Java免费学习笔记(深入)”;
class MyRunnable implements Runnable {
public void run() {
System.out.println("线程通过实现Runnable接口执行");
}
}
// 启动线程
Thread t = new Thread(new MyRunnable());
t.start();
基本上就这些。继承 Thread 的方式简单直观,但不具备扩展性;实现 Runnable 更灵活,便于资源共享和多线程协作,是更常用的方案。不复杂但容易忽略的是:真正启动线程的是 start(),不是 run()。











