← 每日面试题 学习看板

创建线程有几种方式?

面试题/00java/02Java 并发编程/01线程基础概念/创建线程有几种方式?.md

面试记录 2026-10-17

题目:创建线程有几种方式?

难度:medium

标签:java/thread, general/knowledge

评分:⭐⭐⭐☆☆(3/5)

我的回答

java创建线程可以通过thread来直接new创建,也可以通过实现runnable接口来实现,或者是从线程池中取用线程来实现,所有线程创建回收等操作由线程池来管控; 常规情况主要使用线程池来进行线程管控,可以更好的利用线程资源;

点评

优点:答到 Thread 子类、Runnable、线程池三种,并指出工程上首选线程池。

不足:漏了 Callable + FutureTask(带返回值) 这条最常考的方式;也没说清 Runnable 与 Callable 的区别;没说"线程池本质也是复用 Thread/Runnable"。

补充:标准 4 种——继承 Thread、实现 Runnable、实现 Callable(配 FutureTask)、线程池(ExecutorService);Java 单继承限制决定了"实现接口"优于"继承 Thread"。

完整讲解

第一部分:知识重点剖析

核心考点定位:能不能列出 4 种方式,并讲清继承 vs 接口、有无返回值的取舍。

知识点拆解:

  1. 继承 Thread:重写 run(),new 后 start()。受单继承限制,不推荐。
  2. 实现 Runnable:把任务与线程解耦,可配合线程池、lambda,推荐。
  3. 实现 Callable:call() 有返回值、可抛异常,需 FutureTask 包装(也实现了 Runnable)才能交给 Thread。
  4. 线程池:ExecutorService.submit/execute,复用线程、可控并发,工程首选。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. Runnable 和 Callable 区别?
  1. 调用 run() 和 start() 有什么区别?
  1. 为什么阿里规范不推荐 new Thread / Executors?

第三部分:面试者参考回答(三步法口语化)

【一句话结论】

面试官您好,创建线程标准有 4 种方式,实际开发首选线程池。

【三点展开】

第一,继承 Thread 重写 run,简单但受单继承限制;

第二,实现 Runnable / Callable——Callable 有返回值、能抛异常,要用 FutureTask 包装;

第三,线程池 ExecutorService 提交任务,线程复用、并发可控,是工程首选。

【一句边界】

当然,简单的一次性任务用 Runnable 就行,但生产环境不要裸 new Thread,也不要用 Executors 快捷工厂。