返回章节
第14章测试
Fork/Join框架 - 测试你的学习成果
1. Fork/Join框架的核心思想是什么?
A. 生产者-消费者模式
B. 分而治之(分治算法)
C. 观察者模式
D. 单例模式
2. 工作窃取算法的主要特点是什么?
A. 空闲线程从其他线程的任务队列尾部窃取任务
B. 所有线程共享一个任务队列
C. 任务只能由创建它的线程执行
D. 使用优先级队列管理任务
3. RecursiveTask和RecursiveAction的主要区别是什么?
A. RecursiveTask用于CPU密集型任务,RecursiveAction用于I/O密集型任务
B. RecursiveTask有返回值,RecursiveAction无返回值
C. RecursiveTask是同步的,RecursiveAction是异步的
D. 没有区别,只是名称不同
4. 在Fork/Join框架中,什么时候应该停止任务分解?
A. 当任务数量达到线程数时
B. 当任务大小小于预设阈值时
C. 当递归深度达到最大值时
D. 当内存使用率过高时
5. 以下哪种任务最适合使用Fork/Join框架?
B. 数据库查询操作
B. 网络I/O操作
C. 大数组的并行排序
D. 文件读写操作
6. ForkJoinPool.commonPool()的优势是什么?
A. 可以自定义线程数量
B. 避免创建多个线程池,节省资源
C. 支持优先级调度
D. 可以处理I/O密集型任务
7. 在compute()方法中,fork()和join()的正确使用方式是?
A. 对所有子任务都调用fork(),然后依次join()
B. 对一个子任务调用fork(),另一个直接compute(),最后join()
C. 先join()再fork()
D. 只调用fork(),不需要join()
8. Fork/Join框架中的双端队列(Deque)的作用是什么?
A. 存储线程的执行结果
B. 每个工作线程维护自己的任务队列
C. 缓存计算中间结果
D. 管理线程的生命周期
提交答案
答案解析