Java创建线程有三种方式:1.继承Thread类,简单但受限于单继承;2.实现Runnable接口,解耦任务与执行者,推荐使用;3.实现Callable接口配合Future获取返回值,适用于需异步结果的场景。

Java 中创建线程主要有三种常用方式,核心区别在于是否继承/实现特定接口、代码组织方式以及扩展性。最推荐的是后两种,尤其是 实现 Runnable 接口,它更符合面向对象设计原则,也避免了单继承限制。
1. 继承 Thread 类
直接让自定义类继承 java.lang.Thread,重写 run() 方法,然后调用 start() 启动线程。
- 简单直观,适合快速验证逻辑
- 缺点是 Java 不支持多继承,一旦继承了 Thread,就无法再继承其他类
- 不推荐在复杂项目中使用,耦合度高
2. 实现 Runnable 接口(最常用)
定义一个类实现 Runnable 接口,重写 run() 方法;再把该实例传给 Thread 构造器,调用 start()。
- 解耦了“任务”和“执行者”,任务逻辑可复用
- 支持多个线程共享同一个 Runnable 实例(如处理队列任务)
- 兼容线程池(
ExecutorService只接受Runnable或Callable)
3. 实现 Callable 接口 + Future(带返回值)
Callable 和 Runnable 类似,但它的 call() 方法可以有返回值、抛出异常;需配合 Future 获取结果,通常通过线程池执行。
千博购物系统.Net能够适合不同类型商品,为您提供了一个完整的在线开店解决方案。千博购物系统.Net除了拥有一般网上商店系统所具有的所有功能,还拥有着其它网店系统没有的许多超强功能。千博购物系统.Net适合中小企业和个人快速构建个性化的网上商店。强劲、安全、稳定、易用、免费是它的主要特性。系统由C#及Access/MS SQL开发,是B/S(浏览器/服务器)结构Asp.Net程序。多种独创的技术使
立即学习“Java免费学习笔记(深入)”;
- 适用于需要获取异步执行结果的场景(比如远程调用、计算密集型任务)
- 不能直接传给
Thread构造器,必须通过ExecutorService.submit() - 比
Runnable多一层封装,但功能更完整
基本上就这些。日常开发优先选 Runnable,要结果才用 Callable;继承 Thread 仅作学习或极简演示用。










