package Ġcom . xg imi . file manager . utils Ċ Ċ import Ġjava . util . concurrent .* Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ /** Ċ Ġ* ĠĠĠ Ġauthor Ġ: Ġj oker . peng Ċ Ġ* ĠĠĠ Ġe - mail Ġ: Ġj oker . peng @ xg imi . com Ċ Ġ* ĠĠĠ Ġdate ĠĠ Ġ: Ġ 2 0 2 0 / 8 / 1 9 Ġ 1 3 : 5 6 Ċ Ġ* ĠĠĠ Ġdesc ĠĠ Ġ: Ċ Ġ*/ Ċ object ĠThread Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠCPU _ COUNT Ġ= ĠRuntime . get Runtime (). available Processors () ĊĠĠĠ Ġprivate Ġval ĠCORE _ POOL _ SIZE Ġ= ĠCPU _ COUNT Ġ+ Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠMAX IMUM _ POOL _ SIZE Ġ= ĠCPU _ COUNT Ġ* Ġ 2 Ġ+ Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠK EE P _ AL IVE Ġ= Ġ 1 L ĊĠĠĠ Ġprivate Ġval ĠTHREAD _ NAME Ġ= Ġ" FileManager " ĊĊĠĠĠ Ġprivate Ġval Ġfactory : ĠThread Factory Ġ= Ġobject Ġ: ĠThread Factory Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Count Ġ= ĠAtomicInteger ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Thread ( run nable : ĠRunnable ): ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠThread ( run nable , ĠTHREAD _ NAME Ġ+ Ġ" Ġ# " Ġ+ Ġm Count . get And Increment ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġs Pool Work Queue : ĠBlock ing Queue < Runnable > Ġ= ĠLinked BlockingQueue ( 6 4 ) ĊĊĠĠĠ Ġprivate Ġval Ġm ThreadPool : ĠExecutor Ġ= ĠThreadPool Executor ( ĊĠĠĠĠĠĠĠ ĠCORE _ POOL _ SIZE , ĊĠĠĠĠĠĠĠ ĠMAX IMUM _ POOL _ SIZE , ĊĠĠĠĠĠĠĠ ĠK EE P _ AL IVE , ĊĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS , ĊĠĠĠĠĠĠĠ Ġs Pool Work Queue , ĊĠĠĠĠĠĠĠ Ġfactory ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġexecute ( run nable : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm ThreadPool . execute ( run nable ) ĊĠĠĠ Ġ} Ċ } Ċ