首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

为啥要使用线程池

2012-07-23 
为什么要使用线程池1.线程池用在什么地方。1)限制线程的执行数量。2)节省线程创建和销毁的开销。3)为异步请求

为什么要使用线程池

1.线程池用在什么地方。1)限制线程的执行数量。2)节省线程创建和销毁的开销。3)为异步请求提供执行器。
2.线程池的风险。1)死锁,不过搜索没有使用共用资源,所以不存在死锁。2)资源不足,这个需要有足够的经验去调整线程池大小,目前搜索使用的是最小50,最大150,感觉这个有待调整。3)线程泄漏,如:线程抛出异常便不回收线程。不过使用Jdk自带的线程池是不会有这个问题的。
3.我们的工程是怎样用到线程池的Future<SearchResultSet> future = poolExe.submit(new SearchTask(sb,?offset, limit));return future.get(TIMEOUT, TimeUnit.MILLISECONDS);也可以直接使用,即不使用异步,如:return sb.buildResult(offset, limit);这样会减少CPU占用,但是降低了对线程的控制,可能会增加内存占用,并且如果服务端出了问题,一定会反应在web端的。
4.mysql是怎么用到线程池的。mysql使用的是连接池,把持的是网络链接,减少网络链接的创建和销毁。与线程池并不完全一样,线程池把持的是线程资源,减少线程的创建和销毁。其思想是一样的。
5.Effective Java 里有第68节 Prefer executors and tasks to threads 阐述了为什么要使用executors,它阐述的主要原因是:1)限制线程启动数量。2)从架构的角度,要把task跟executor分开,而使用threads是整合在一起的。

?

热点排行