用CD4518和74LS00搞定数字电路课设:手把手教你搭建一个带校时功能的电子钟
2026/6/6 3:39:03
1. 继承 Thread 类方式
// 自定义类继承Thread,重写run() class MyThread extends Thread{ @Override public void run() { System.out.println("线程执行任务"); } } // 创建&启动 MyThread t1 = new MyThread(); t1.start();2. 实现 Runnable 接口方式
// 实现Runnable接口,重写run() class MyTask implements Runnable{ @Override public void run() { System.out.println("线程执行任务"); } } // 任务对象传入Thread构造器 MyTask task = new MyTask(); Thread t2 = new Thread(task); t2.start();核心区别汇总
| 对比维度 | 继承 Thread 类 | 实现 Runnable 接口 |
|---|---|---|
| 继承限制 | Java 单继承,继承 Thread 后无法再继承其他父类,扩展性受限 | 实现接口,可额外继承其他类,规避单继承限制,开发首选 |
| 资源共享 | 每个线程是独立对象,无法共享同一个任务数据,多线程不能共用资源 | 多个Thread对象传入同一个 Runnable 实例,天然实现资源共享,适合售票、抢单等场景 |
| 任务与线程耦合 | 任务逻辑和线程生命周期绑定在一起,耦合度高 | 任务(Runnable)和线程(Thread)分离,解耦,任务可复用、可灵活分配给不同线程 |
| 代码复用 | 任务逻辑绑定在 Thread 子类中,复用性差 | 任务单独封装,可复用在线程池、定时器等多种执行载体 |