Java 两种创建线程方式对比:继承 Thread 子类 VS 实现 Runnable 接口
1. 继承 Thread 类方式
// 自定义类继承Thread
public class MyThread extends Thread {
// 重写run(),编写线程执行逻辑
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
public static void main(String[] args) {
// 创建线程对象
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
// 启动线程
t1.start();
t2.start();
}
}
2. 实现 Runnable 接口方式
// 实现Runnable接口,封装任务
public class MyTask implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
public static void main(String[] args) {
// 同一个任务对象
MyTask task = new MyTask();
// 多个线程共用同一个任务
Thread t1 = new Thread(task, "线程1");
Thread t2 = new Thread(task, "线程2");
t1.start();
t2.start();
}
}
二、核心区别
继承限制
Thread:Java 单继承,继承后不能再继承其他类;
Runnable:接口多实现,不占用继承名额,拓展性好。
资源共享
Thread:每个线程是独立对象,共享数据要加 static;
Runnable:同一个任务对象可传给多个 Thread,天然共享成员变量,适合售票等并发场景。
职责与复用
Thread:线程管理、业务代码耦合在一起;
Runnable:任务和线程分离,任务可复用,适配线程池,企业开发主流。
三、总结
日常开发优先实现 Runnable;仅简单测试用继承 Thread。
更多推荐

所有评论(0)