您的位置:首页 > 职场人生

并发情况处理-面试

2016-02-17 10:13 330 查看
对于三种常见的并发情况的简单分析:
1.高并发低耗时
2.低并发高耗时
3.高并发高耗时

先说高并发低耗时,由于线程运行时间很短,为了能够大量的支持并发可以使用newCachedThreadPool这种线程池。高并发的情况如果没有大量线程支撑的话,必定需要一个很大的阻塞队列来缓存任务,这样就导致任务有较长延时。当然也有人会说线程很多的话也会导致系统开销很大,的确是这样,所以这种时候就要做负载均衡将并发量拆解分散到各个节点。
对于低并发高耗时,在http://ifeve.com/里面有个面试的回答分析的很好。高耗时是要看是CPU耗时还是IO耗时,如果是CPU耗时线程数通常解决不了太多的问题,因为cpu的负载本身都已经饱和,再添加线程对整体耗时作用不大(考虑到线程调度等因素)。如果是io耗时,由于io是会阻塞线程(类似于sleep方式使得线程进入等待状态),所以线程数可以稍微多一些,让cpu能够负载能够尽量高一些。这种情况通常使用fixedthreadpool,主要是需要设置一个合理的线程数量。
第三种情况,应该需要用到异步处理,通过任务队列将任务缓存起来,然后异步的执行这些任务,但是还是需要增加节点来处理这些任务,不然只是解决了客户端避免由于同步调用响应慢的问题,任务的完成时间还是没得到改善。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: