package Ġsolver Ċ Ċ import Ġk dt ree . Kd Point Ċ import Ġk dt ree . Kd Tree Ċ import Ġjava . util .* ĊĊ Ċ class ĠSolver Worker < T >( tree : ĠK d Tree < T >, Ġinput Points : ĠList < Kd Point < T >>) Ġwhere ĠT Ġ: ĠNumber , ĠT Ġ: ĠComparable < T > Ġ{ ĊĠĠĠ Ġprivate Ġval Ġthread : ĠThread ĊĠĠĠ Ġprivate Ġval Ġsolver Ġ= ĠSolver ( tree ) ĊĊĠĠĠ Ġprivate Ġval Ġresult Points : ĠMutable List < Kd Point < T >> Ġ= ĠArrayList ( input Points . size ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . thread Ġ= ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( point Ġin Ġinput Points ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Points . add ( solver . find Nearest Point ( point )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . thread . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠW aits Ġfor Ġthis Ġworker Ġthread Ġto Ġfinish , Ġthen Ġreturns Ġthe Ġlist Ġof Ġresult ĊĠĠĠĠ Ġ* Ġpoints Ġto Ġthe Ġcaller . ĠThe Ġindex Ġof Ġeach Ġresult Ġpoint Ġcorresponds Ġto Ġthe Ġindex ĊĠĠĠĠ Ġ* Ġof Ġthe Ġinput Ġpoints Ġwhen Ġconstructing Ġthis Ġworker . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Result Points (): ĠList < Kd Point < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . thread . join () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult Points ĊĠĠĠ Ġ} Ċ }