android使用Executors创建线程池的弊端
来源:互联网 发布:淘宝开店软件哪个好 编辑:程序博客网 时间:2024/06/05 17:59
线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。说明:Executors各个方法的弊端:1)newFixedThreadPool和newSingleThreadExecutor: 主要问题是堆积的请求处理队列可能会耗费非常大的内存,甚至OOM。2)newCachedThreadPool和newScheduledThreadPool: 主要问题是线程数最大数是Integer.MAX_VALUE,可能会创建数量非常多的线程,甚至OOM。
正确的写法案例:Positive example 1: //org.apache.commons.lang3.concurrent.BasicThreadFactory ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1, new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
Positive example 2: ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() .setNameFormat("demo-pool-%d").build(); //Common Thread Pool ExecutorService pool = new ThreadPoolExecutor(5, 200, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); pool.execute(()-> System.out.println(Thread.currentThread().getName())); pool.shutdown();//gracefully shutdown
Positive example 3: <bean id="userThreadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="10" /> <property name="maxPoolSize" value="100" /> <property name="queueCapacity" value="2000" /> <property name="threadFactory" value= threadFactory /> <property name="rejectedExecutionHandler"> <ref local="rejectedExecutionHandler" /> </property> </bean> //in code userThreadPool.execute(thread);
阅读全文
0 0
- android使用Executors创建线程池的弊端
- Executors创建线程池的弊端
- Java 使用Executors创建线程池
- 使用Executors工厂类创建线程池
- android 线程池的使用以及Executors的优缺点
- Executors 工具类 创建 的 线程池
- android 多线程 - 线程池 Executors.newFixedThreadPool 的使用例子
- android 多线程 - 线程池 Executors.newFixedThreadPool 的使用例子
- Android线程池:ExecutorService和Executors使用
- Executors与ThreadPoolExecutor(阿里发布的 Java开发手册中强制线程池不允许使用 Executors 去创建)
- Android的线程池:ExecutorService和Executors
- Java学习--线程池Executors的使用
- 线程池的使用Executors和Future
- Java的Executors(线程池)使用
- Executors.newFixedThreadPool线程池的使用
- JAVA线程池类Executors的使用
- Java Executors工具线程池的使用
- Java线程池Executors的使用
- C++编程实现从注册表中获取程序安装路径并调用exe文件
- 最大公约数
- Warning not all local changes may be shown due to an error(IDEA Bug) IDEA不能检查到代码变化
- c++11多线程编程(五):使用mutex修复竞争
- React Native之Text组件numberofLines属性
- android使用Executors创建线程池的弊端
- JNDI学习总结-项目实例—JNDI数据源的配置
- 关于动态网页的抓取
- cocos2dx 触摸吞噬的实现
- WinForm AutoComplete 输入提示、自动补全
- 2017统计采购信息平台实力排行
- 【LEFT JOIN 实战记录】是否纳入市级预算项目概览界面
- tinker热修复, 一步一步集成, 特别简单
- 日常运维(六):Linux系统的任务计划与系统服务管理