面试题答案
一键面试关键组件及其功能
- ThreadPool 类:
- 功能:作为线程池的核心类,负责管理线程的创建、销毁和调度。它维护一个线程队列,用于存储空闲线程,当有新任务到来时,从队列中取出线程执行任务,任务完成后再将线程放回队列。同时,它还处理线程池的配置参数,如最大线程数、最小线程数等,以确保线程池在不同负载情况下都能高效运行。
- TaskQueue:
- 功能:用于存储待执行的任务。当客户端请求到达时,相应的任务会被封装并放入任务队列。线程池中的线程从任务队列中取出任务并执行,任务队列起到了请求与执行线程之间的缓冲作用,使得系统能够有序地处理多个并发请求。
- ThreadFactory:
- 功能:负责创建线程池中的线程。它提供了一种统一的方式来创建线程,包括设置线程的名称、优先级等属性。通过使用线程工厂,可以根据不同的需求定制线程的创建逻辑,例如为不同类型的任务创建具有不同优先级的线程。
- Condition Variable(条件变量):
- 功能:在线程池中有两个主要作用。一方面,当任务队列中没有任务时,线程可以通过条件变量进入等待状态,释放 CPU 资源,避免无效的循环等待。另一方面,当有新任务加入任务队列时,通过条件变量通知等待的线程,使其醒来从任务队列中取出任务执行,实现线程间的同步与协作。
- Mutex(互斥锁):
- 功能:用于保护共享资源,如任务队列。由于多个线程可能同时访问任务队列进行任务的添加和取出操作,互斥锁可以确保在同一时刻只有一个线程能够访问任务队列,防止数据竞争和不一致问题,保证线程安全。