java多线程创建方式包括:1.继承thread类重写run()并调用start();2.实现runnable接口传入thread构造器启动;3.使用callable+futuretask获取返回值;4.通过threadpoolexecutor线程池复用管理任务。

Java多线程机制提供多种方式创建和启动并发任务,核心在于区分“定义任务”和“启动执行”两个阶段。直接调用 run() 不会开启新线程,必须调用 start() 才能真正并发运行。
继承Thread类创建线程
适合简单场景,逻辑直接封装在线程子类中。但受Java单继承限制,无法再继承其他类。
- 定义一个类继承
Thread,重写run()方法 - 创建该类实例后,调用
start()启动线程(不是run()) - 每个
Thread对象只能启动一次,重复调用start()抛出IllegalThreadStateException
实现Runnable接口启动任务
更推荐的方式,解耦任务逻辑与线程控制,支持组合复用,避免单继承问题。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 编写类实现
Runnable接口,实现run()方法 - 将该实例传入
Thread构造器,再调用start() - 也可配合 lambda 表达式简化:
new Thread(() -> System.out.println("Hello")).start();
使用Callable与Future获取返回值
当任务需要返回结果或抛出异常时,Runnable 无法满足,应选择 Callable。
-
Callable的call()方法可返回值、可抛异常,而Runnable的run()无返回、不抛检查异常 - 需包装为
FutureTask(实现了Runnable和Future),再交由线程执行 - 通过
future.get()获取结果,该调用会阻塞直到任务完成
通过线程池统一管理并发任务
频繁创建销毁线程开销大,生产环境应优先使用线程池,复用线程资源并控制并发规模。
- 使用
Executors工具类快速创建常见线程池(如newFixedThreadPool、newCachedThreadPool) - 更推荐直接使用
ThreadPoolExecutor构造器,明确配置核心线程数、最大线程数、队列容量等参数 - 提交任务可用
execute(Runnable)或submit(Callable),后者返回Future支持结果获取
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










