JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue
2016-07-01 11:42
381 查看
池技术是典型的享元模式。
频繁使用new Thread来创建线程的方式并不太好。因为每次new Thread新建和销毁对象性能较差,线程缺乏统一管理。好在java提供了线程池,它能够有效的管理、调度线程,避免过多的资源消耗。优点如下:
重用存在的线程,减少对象创建、销毁的开销。
可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。
提供定时执行、定期执行、单线程、并发控制等功能。
线程池原理简单的解释就是会创建多个线程并且进行管理,提交给线程的任务会被线程池指派给其中的线程进行执行,通过线程池的统一调度、管理线程池的统一调度、管理使得多线程的使用更简单高效。
线程池负责管理工作线程,包含一个等待执行的任务队列。线程池的任务队列是一个Runnable集合,工作线程负责从任务队列中取出并执行Runnable对象。
任务队列一般就是BlockingQueue。
更多关于java并发的知识会在以后的博客中作为重点专题来讲解,这里暂时写这么多。
频繁使用new Thread来创建线程的方式并不太好。因为每次new Thread新建和销毁对象性能较差,线程缺乏统一管理。好在java提供了线程池,它能够有效的管理、调度线程,避免过多的资源消耗。优点如下:
重用存在的线程,减少对象创建、销毁的开销。
可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。
提供定时执行、定期执行、单线程、并发控制等功能。
线程池原理简单的解释就是会创建多个线程并且进行管理,提交给线程的任务会被线程池指派给其中的线程进行执行,通过线程池的统一调度、管理线程池的统一调度、管理使得多线程的使用更简单高效。
线程池负责管理工作线程,包含一个等待执行的任务队列。线程池的任务队列是一个Runnable集合,工作线程负责从任务队列中取出并执行Runnable对象。
任务队列一般就是BlockingQueue。
更多关于java并发的知识会在以后的博客中作为重点专题来讲解,这里暂时写这么多。
相关文章推荐
- TIPTOP GP5.1 实现链接网页方法 ui.Interface.frontCall
- 谷歌原生自动化框架UiAutomator1.0
- iOS VoiceOver Programming Guide
- JavaGUI版本销售管理系统
- HDU——1242Rescue(BFS+优先队列求点图最短路)
- UIBezierPath精讲
- 自定义View重绘使requestLayout, invalidate和postInvalidate的异同
- UGUI Text组件实际文本宽高的获取
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- tableView设置UITableViewStyleGrouped顶部有空余高度
- Starting MySQL...The server quit without updating PID file
- UIToolBar barItem的位置
- 启动安卓模拟器报错 emulator: ERROR: x86_64 emulation currently requires hardware acceleration! CPU acceleration status:HAXM must be updated(version 1.1.1<6.0.1) 解决办法
- 在iOS8中使用UIAlertController
- Android Studio 运行时出现 finished with non-zero exit value 2 错误分析
- #150 – An Example of Using PropertyChanged and CoerceValue Callbacks(PropertyChanged和CoerceValue例子)
- 让UITableView的section header view不悬停的方法
- UIViewController 间的传值方式
- 19 C#循环语句的跳过和中断 continue和break
- indent guides 格式化代码(添加竖线)