面试题答案
一键面试线程工厂的基本作用
- 创建线程:线程工厂主要负责创建线程,在线程池需要新线程时,线程工厂的
newThread
方法会被调用,创建一个新的Thread
实例。 - 提供统一创建线程的方式:通过线程工厂,线程池可以统一管理线程的创建过程,便于对线程的属性(如线程名、优先级、是否为守护线程等)进行设置和定制。这使得线程池在创建线程时更加灵活,不同场景下可以根据需求定制不同的线程创建逻辑。
默认线程工厂创建线程的特点
- 线程名:线程名具有一定的命名规则,格式为
pool-<pool number>-thread-<thread number>
,这种命名方式有助于在多线程环境中识别和调试线程。例如,pool-1-thread-3
表示线程池编号为 1 的第 3 个线程。 - 线程优先级:默认线程工厂创建的线程优先级为
Thread.NORM_PRIORITY
,即普通优先级,优先级数值为 5。在Java的线程优先级体系中,优先级范围是 1(最低)到 10(最高)。 - 是否为守护线程:默认情况下,线程不是守护线程。守护线程是一种特殊的线程,当所有非守护线程结束时,守护线程会自动结束。而默认线程工厂创建的线程是用户线程,它不会因为其他线程的结束而自动结束,只有当该线程执行完毕或者被显式终止时才会结束。
- 所属线程组:线程属于创建线程池的
ThreadGroup
。线程组可以用于管理一组相关的线程,默认线程工厂创建的线程会与创建线程池的线程处于同一个线程组。