<!----><!----><!---->
1. 定制线程池的大小
Ncpu = CPU 的数量
Ucpu = 目标 CPU 的使用率, 0<=Ucpu<=1
W/C = 等待时间与计算时间的比率
为保持处理器达到期望的使用率,最优的池的大小等于:
Nthreads = Ncpu * Ucpu * (1 + W / C)
也可以使用 Runtime 来获得 CPU 的数目
int num = Runtime.getRuntime ().availableProcessors();
2. 定制 ThreadPoolExecutor
利用 new ThreadPoolExecutor(
int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler
) ;
<!---->3. <!---->管理队列任务
设置线程池的饱和策略可以用
ThreadPoolExecutor.setRejectedExecutionHandler ();
JDK 了几种不同的 RejectedExceptionHandler
AbortPolicy , ( 中止策略 )
CallerRunsPolicy , ( 调用者运行 )
DiscardPolicy ( 遗弃策略 )
DiscardOldestPolicy ( 遗弃最旧的 )
可通过如下的形式构造
new ThreadPoolExecutor.CallerRunsPolicy()