news 2026/6/12 10:45:22

使用Thead子类创建线程VS使用Thread直接创建线程(Runnable接口)的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Thead子类创建线程VS使用Thread直接创建线程(Runnable接口)的区别

一、两种写法代码示例

1. 继承 Thread 类

java

// 1. 继承Thread

class MyThread extends Thread {

@Override

public void run() {

System.out.println("线程执行:" + Thread.currentThread().getName());

}

}

// 使用

MyThread t1 = new MyThread();

t1.start(); // 启动线程

2. 实现 Runnable 接口

java

// 1. 实现Runnable

class MyRunnable implements Runnable {

@Override

public void run() {

System.out.println("线程执行:" + Thread.currentThread().getName());

}

}

// 使用

MyRunnable run = new MyRunnable();

Thread t2 = new Thread(run);

t2.start();

二、核心区别

1. 继承限制(最关键)

- 继承 Thread:Java 是单继承,类一旦继承 Thread ,不能再继承其他父类,扩展性差。

- 实现 Runnable:只是实现接口,还可以正常继承别的类,灵活度高。

2. 资源共享

- 继承 Thread:每个对象都是独立线程,无法天然共享成员变量。

- 实现 Runnable:同一个 Runnable 对象可以传给多个 Thread,天然实现多线程共享资源(售票、计数场景首选)。

示例(共享票数):

java

// 共享资源场景,Runnable 优势明显

class Ticket implements Runnable {

private int ticket = 10; // 共享变量

@Override

public void run() {

while(ticket > 0) { System.out.println(Thread.currentThread().getName() + " 卖票:" + ticket--);

}

}

}

// 同一个任务对象,多个线程执行,共享票数

Ticket task = new Ticket();

new Thread(task, "窗口1").start();

new Thread(task, "窗口2").start();

3. 职责分离

- Thread:既是线程对象,又是任务,耦合度高。

- Runnable:任务(run)和线程(Thread)分离,符合面向对象设计。

4. 代码复用

- Runnable 任务可以反复交给不同线程、线程池执行,复用性更强。

三、执行流程共同点

1. 重写/实现 run():任务逻辑,不会主动开启新线程。

2. 调用 start():向 JVM 申请开启新线程,JVM 自动调用 run() 。

误区:直接调用 run() 只是普通方法调用,不会创建新线程。

四、使用场景&推荐

1. 优先使用:实现 Runnable 接口

- 需要共享资源

- 类需要继承其他父类

- 配合线程池使用(线程池只接收 Runnable/Callable)

2. 偶尔使用:继承 Thread 类

- 简单独立线程、无需继承其他类、无需共享资源的简单场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 10:41:02

你的文章“太干”还是“太水”?一个判断标准就够了

做自媒体的人,大概都纠结过这个问题:文章写得太干,怕读者看不下去;写得太水,又怕没干货。我以前也经常在这两头摇摆。后来我找到了一个判断标准,帮我在“干”和“水”之间找到了平衡。一、什么是“太干”&a…

作者头像 李华
网站建设 2026/6/12 10:32:35

2026年企业级AI API选型实录:五大聚合平台生产力深度复盘

当我们将人工智能全面接入业务底层,API聚合与中转服务已悄然跃升为企业技术底座的关键一环。这不再仅仅是简单的接口转发,而是直接决定了业务的抗风险能力、财务管理的清晰度以及技术栈的迭代效率。一旦API通道不稳定,可能引发核心业务停摆&a…

作者头像 李华
网站建设 2026/6/12 10:31:54

MuleSoft企业级AI编排:安全可控的大模型集成实践

1. 项目概述:当企业级集成平台遇上大语言模型“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题不是一句空泛的宣传口号,而是我在过去18个月里亲手落地的三个核心生产系统的真实写照。它讲的不是“用…

作者头像 李华