Java中创建线程最简方式是匿名内部类继承Thread并重写run()方法,需调用start()启动;更推荐实现Runnable接口或使用Lambda表达式,兼顾设计原则与可维护性。

Java 中用匿名内部类创建线程最直接的方式是 new Thread() { ... }.start(),核心在于重写 run() 方法,无需额外定义类或实现接口。
直接继承 Thread 类(最简写法)
适合逻辑简单、只用一次的场景,代码紧凑,一行就能启动:
- new Thread() { public void run() { System.out.println("线程执行中"); } }.start();
- 注意:必须调用 start(),不是 run();调用 run() 只是普通方法调用,不会开启新线程
- 若需传参,可在 new Thread 前准备变量,内部类可访问所在作用域的 final 或“事实 final”局部变量
实现 Runnable 接口(更推荐)
更符合面向对象设计原则,避免单继承限制,也便于复用和测试:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- new Thread(new Runnable() { public void run() { System.out.println("通过 Runnable 启动"); } }).start();
- Java 8+ 可进一步简化为 Lambda 表达式:new Thread(() -> System.out.println("Lambda 启动")).start();
- Runnable 方式天然支持传参——把参数作为外部变量捕获,或封装进 lambda 的闭包中
常见注意事项
匿名内部类创建线程虽快,但要注意几个实际细节:
立即学习“Java免费学习笔记(深入)”;
- 无法获取线程返回值(如需结果,应考虑 Future + Callable 或 CompletableFuture)
- 异常处理要显式加 try-catch,匿名类中未捕获的 RuntimeException 会导致线程静默终止
- 不建议在匿名类中写大量逻辑,可读性和维护性差;复杂任务应抽取为独立 Runnable 或 Thread 子类
- 线程名默认为空或系统分配,如需调试,可用 Thread(ThreadGroup, Runnable, String) 构造器指定名称
快捷是真快捷,但别为了省几行代码牺牲可维护性。小任务用匿名类没问题,稍复杂就该分出来。

















