Android线程—四种线程池的学习与总结
来源:互联网 发布:刺客信条壁纸软件 编辑:程序博客网 时间:2024/06/06 05:22
在Java开发中,有时遇到多线程的开发时,直接使用Thread操作,对程序的性能和维护上都是一个问题,使用Java提供的线程池来操作可以很好的解决问题,于是找了下API看到Java提供四种线程池使用,Java通过Executors提供四种线程池,分别为:
1、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
2、newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
3、newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
4、newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
下面使用Java代码看一下使用:
(1) newCachedThreadPool
创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程
(2). newFixedThreadPool
创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。Java示例代码:
执行后可以看到效果,固定了线程数为4 ,打印4个数字后会休眠5s后再次打印4个数字。
(3) newScheduledThreadPool
创建一个定长线程池,支持定时及周期性任务执行。示例:
这样就延迟了5秒执行操作。
(4) newSingleThreadExecutor
创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,示例:
这样执行代码后,会使用一个线程一次打印出0 1 2 3 4 间隔5s。
线程池的好处:
1.减少在创建和销毁线程上所花的时间以及系统资源的开销 。
2.避免了造成系统创建大量线程而导致消耗完系统内存。
总结: FixedThreadPool是一个优秀的线程池,使用时需要注意当线程池中没有可运行任务时,它不会释放工作线程,还会占用一定的系统资源;CachedThreadPool线程池,当没有任务执行时,会释放调,当有任务时,又要创建,需要 消耗系统开销,而且在大量并发执行时,需要注意控制任务量,避免大量高并发导致系统问题。
- Android线程—四种线程池的学习与总结
- [线程学习]线程的四种状态
- Android 四种常见的线程池
- Android线程池-学习总结
- Android 四种线程池
- Android 四种线程池
- Android 四种线程池
- Android 四种线程池
- Android线程学习总结
- Android的线程与线程池
- Android的线程与线程池
- 线程池的总结学习
- 守护线程与阻塞线程的四种情况
- 守护线程与阻塞线程的四种情况
- 守护线程与线程阻塞的四种情况
- Android 的进程与线程总结
- Android 的进程与线程总结
- Android 的进程与线程总结
- MUI+Htmlplus开发APP实现页面之间传值
- 关于我的个人网站
- Kotlin 语法
- Linux自动删除n天前的日志
- 3167:神奇的辣条
- Android线程—四种线程池的学习与总结
- Bootstrap3.0学习第十轮(下拉菜单、按钮组、按钮式下拉菜单)
- Des解密 以及 将。net的DEs加密 用android 的DES解密
- 对tensorflow java api进行cpu优化
- 千万级用户Redis缓存集群搭建以及项目实战
- 使用命令参数方式指定log4j配置文件
- NGINX下配置CACHE-CONTROL
- angularJs操作select列表框
- JSP 国际化