/* Ġg ak shint ala Ġcreated Ġon Ġ 4 / 1 4 / 2 0 Ġ*/ Ċ package Ġkt . imp er ative . parallel Ċ Ċ import Ġkt . common . EXPECTED _ RESULT Ċ import Ġkt . common . TEAM Ċ import Ġkt . imp er ative . Imp er ative Concat . Companion . concat Last Names Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . util . concurrent . Fork Join Pool Ċ import Ġjava . util . concurrent . Recursive Task Ċ Ċ internal Ġclass ĠMy Recursive Task ( private Ġval Ġteam : ĠList < String ?> ?) Ġ: ĠRecursive Task < String >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcompute (): ĠString Ġ= Ġteam ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . size Ġ> ĠMIN _ TEAM _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmid Ġ= Ġit . size Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Recursive Task 1 Ġ= ĠMy Recursive Task ( it . sub List ( 0 , Ġmid )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Recursive Task 2 Ġ= ĠMy Recursive Task ( it . sub List ( mid , Ġit . size )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Recursive Task 1 . fork () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Recursive Task 2 . fork () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconcat Results From Fork s ( my Recursive Task 1 , Ġmy Recursive Task 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconcat Last Names ( it ) Ġ// ĠUsing Ġconcat Last Names Ġas ĠMIN _ TEAM _ SIZE Ġcan Ġbe Ġgreater Ġthan Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ?: Ġ"" ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠserialVersionUID Ġ= Ġ- 5 9 7 8 2 7 4 3 0 3 3 1 4 6 8 8 5 2 7 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMIN _ TEAM _ SIZE Ġ= Ġ 2 Ġ// ĠIn Ġreal - world , ĠDO ĠNOT Ġhave Ġit Ġbelow Ġ 1 0 , 0 0 0 ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFork Join Concat Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparallel With Fork Join Pool () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfork Join Pool Ġ= ĠFork Join Pool ( AVAILABLE _ CO RES ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Result Ġ= Ġfork Join Pool . invoke ( My Recursive Task ( TEAM )) ĊĠĠĠĠĠĠĠ Ġprintln ( actual Result ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( EXPECTED _ RESULT , Ġactual Result ) ĊĠĠĠ Ġ} Ċ } Ċ