上海某小公司面试题:Java线程池来聊聊

forkjoinpool和普通线程池区别

2 02 3 年,我的朋友最近在讨论ForkJoinPool和常规线程池的区别。
他说ForkJoinPool喜欢“分而治之”,就像把大骨头拆成小骨头,拆成小任务,然后大家一起吃。
常规字符串池就像排队吃饭一样,一次一个。

在任务分配方面,ForkJoinPool会先拆分任务,然后分配给不同的线程。
在普通线程池中,当任务到达时,会按顺序交给空闲线程。

从执行方式上来说,ForkJoinPool有“偷功”的功能,就像偷别人的骨头一样,可以防止部分线程闲置。
普通线程池只是等待下一个任务的到来。

适用的场景也有很大不同。
ForkJoinPool适合可拆分的任务,例如大规模数据处理。
普通线程池适用于自包含且无法共享的任务。

所以他得出的结论是,选择哪个线程池取决于任务类型和系统要求。
这提醒我,有时候选择比努力更重要。
忘记它,你明白了。