package Ġcom . map swith me . util . concurrency Ċ Ċ import Ġcom . map swith me . util . concurrency . Ui Thread Ċ import Ġjava . util . concurrent . ExecutorService Ċ import Ġjava . util . concurrent . Linked BlockingQueue Ċ import Ġjava . util . concurrent . ThreadPoolExecutor Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠThreadPool Ġprivate Ġconstructor () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Storage : ĠThreadPool Executor ĊĠĠĠ Ġprivate Ġval Ġm Worker : ĠThreadPool Executor ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġs Instance Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThreadPool () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpool Size : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallowed Time : ĠInt ĊĠĠĠĠĠĠĠ Ġ): ĠThreadPool Executor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThreadPool Executor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpool Size , Ġpool Size , Ġallowed Time . to Long (), ĠTimeUnit . SECONDS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinked BlockingQueue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . allow Core Thread TimeOut ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġsingle Ġthread Ġfor Ġfile Ġoperations . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġstorage : ĠExecutor Service ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġs Instance . m Storage ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġsingle Ġthread Ġfor Ġvarious Ġbackground Ġtasks . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġworker : ĠExecutor Service ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġs Instance . m Worker ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Storage Ġ= Ġcreate ( 1 , Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠ Ġm Worker Ġ= Ġcreate ( 1 , Ġ 2 5 0 ) ĊĠĠĠ Ġ} Ċ }