package Ġcom . vin ners . cube _ v ish w ak arma . core . exec utors Ċ Ċ import Ġjava . util . concurrent .* Ċ Ċ class ĠThread Executor Impl Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġthread Factory : ĠThread Factory Ġ= ĠJob Thread Factory (), ĊĠĠĠ Ġprivate Ġval Ġwork Queue : ĠBlock ing Queue < Runnable > Ġ= ĠLinked BlockingQueue (), ĊĠĠĠ Ġprivate Ġval Ġthread Pool Executor : ĠThreadPool Executor Ġ= ĊĠĠĠĠĠĠĠ ĠThreadPool Executor ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINITIAL _ POOL _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMAX _ POOL _ SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK EE P _ AL IVE _ TIME . to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK EE P _ AL IVE _ TIME _ UNIT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork Queue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Factory ĊĠĠĠĠĠĠĠ Ġ) Ċ ) Ġ: ĠThread Executor Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( run nable : ĠRunnable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrunnable ?. let Ġ{ Ġthread Pool Executor . execute ( run nable ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Runnable Ġto Ġsync Payments ToServer Ġcannot Ġbe Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠJob Thread Factory Ġ: ĠThread Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcounter Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Thread ( run nable : ĠRunnable ): ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠThread ( run nable , ĠTHREAD _ NAME Ġ+ Ġcounter ++) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTHREAD _ NAME Ġ= Ġ" ush a _ sis _" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINITIAL _ POOL _ SIZE Ġ= Ġ 3 Ġ// ĠTODO : ĠGet Ġnumber Ġof ĠCPU Ġcores ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAX _ POOL _ SIZE Ġ= Ġ 5 Ġ// ĠTODO : ĠGet Ġnumber Ġof ĠCPU Ġcores ĊĊĠĠĠĠĠĠĠ Ġ// ĠSets Ġthe Ġnew Purchase Amount Ġof Ġdate Ġan Ġidle Ġthread Ġwaits Ġbefore Ġterminating ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠK EE P _ AL IVE _ TIME Ġ= Ġ 1 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠSets Ġthe ĠTime ĠUnit Ġto Ġseconds ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠK EE P _ AL IVE _ TIME _ UNIT Ġ= ĠTimeUnit . SECONDS ĊĠĠĠ Ġ} Ċ }