线程池拒绝策略

线程池拒绝策略

ID:43282079

大小:90.00 KB

页数:5页

时间:2019-09-28

线程池拒绝策略_第1页
线程池拒绝策略_第2页
线程池拒绝策略_第3页
线程池拒绝策略_第4页
线程池拒绝策略_第5页
资源描述:

《线程池拒绝策略》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ThreadPoolExecutor类实现了ExecutorService接口和Executor接口,可以设置线程池corePoolSize,最大线程池大小,AliveTime,拒绝策略等。常用构造方法:ThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,TimeUnitunit,BlockingQueueworkQueue,RejectedExecutionHandlerhandler)

2、corePoolSize:线程池维护线程的最少数量maximumPoolSize:线程池维护线程的最大数量keepAliveTime:线程池维护线程所允许的空闲时间unit:线程池维护线程所允许的空闲时间的单位workQueue:线程池所使用的缓冲队列handler:线程池对拒绝任务的处理策略当一个任务通过execute(Runnable)方法欲添加到线程池时:l如果此时线程池中的数量小于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。2如果此时线程池

3、中的数量等于corePoolSize,但是缓冲队列workQueue未满,那么任务被放入缓冲队列。3如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并且线程池中的数量小于maximumPoolSize,建新的线程来处理被添加的任务。4如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并且线程池中的数量等于maximumPoolSize,那么通过handler所指定的策略来处理此任务。也就是:处理任务的优先级为:核心线程corePool

4、Size、任务队列workQueue、最大线程maximumPoolSize,如果三者都满了,使用handler处理被拒绝的任务。当线程池中的线程数量大于corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被终止。这样,线程池可以动态的调整池中的线程数。handler有四个选择:5ThreadPoolExecutor.AbortPolicy()抛出java.util.concurrent.RejectedExecutionException异常,示例如下:privat

5、estaticclassWorkerimplementsRunnable{publicvoidrun(){System.out.println(Thread.currentThread().getName()+"isrunning");}}publicstaticvoidmain(String[]args){intcorePoolSize=5;intmaxPoolSize=10;longkeepAliveTime=5;BlockingQueuequeue=newLinkedBlo

6、ckingQueue(10);//拒绝策略1:将抛出RejectedExecutionException.RejectedExecutionHandlerhandler=newThreadPoolExecutor.AbortPolicy();ThreadPoolExecutorexecutor=newThreadPoolExecutor(corePoolSize,maxPoolSize,5keepAliveTime,TimeUnit.SECONDS,queue,handler);

7、for(inti=0;i<100;i++){executor.execute(newWorker());}executor.shutdown();}运行结果如下:pool-1-thread-2isrunningpool-1-thread-3isrunningExceptioninthread"main"java.util.concurrent.RejectedExecutionExceptionpool-1-thread-1isrunningpool-1-thread-7isrunningpool-

8、1-thread-6isrunningpool-1-thread-4isrunningpool-1-thread-9isrunningpool-1-thread-8isrunningpool-1-thread-5isrunningatjava.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1760)atjava.util.concurre

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。