java并发问答集锦-并发回答

java并发问答集锦-并发回答

ID:34438973

大小:98.80 KB

页数:11页

时间:2019-03-06

java并发问答集锦-并发回答_第1页
java并发问答集锦-并发回答_第2页
java并发问答集锦-并发回答_第3页
java并发问答集锦-并发回答_第4页
java并发问答集锦-并发回答_第5页
资源描述:

《java并发问答集锦-并发回答》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、《实战Java高并发程序设计》自上市以来,得到了Java并发学习爱好者的一致好评,有很多读者来信,葛一鸣老师也做了很多专业问答,现在摘记出来,希望大家在学习高并发的同时,能吸收大家的经验,兼容并包、集采众长,探索出自己的并发策略,也希望大家多多在QQ群397196583里交流,葛老师都会抽时间回答,群里的Java朋友也会群策群力!1、服务器请求增多【问】经常碰到类似的面试题:服务器同一时刻最多接收1000个请求,现在一下来了2000个,如何处理【葛】缓存可以使用一些过期机制,尽可能不要溢出。还有就是可以

2、使用类似软引用弱引用做不太重要的缓存。【问】缓存区爆掉,怎么处理?用什么样的抛弃策略?【葛】可以用生产者消费者模式,先放在一个缓冲区中2、多线程额外开销【问】在一般的程序中,会使用多线程提高效率,应付高并发,但是,多线程会有额外的开销、锁、和一些其他的副作用,这样就会无形之中影响了高并发。请问,在多线程、高并发直接如何权衡他们【葛】线程数量要合理。减少线程之间的竞争,还有,就是可以使用无锁。对于热点数据,还可以进行热点分离3、Java8并发相关【问】1、当下多核的服务器比比皆是,作为开发人员,从代码角度

3、考虑,有什么需要的地方?2、多核环境下多线程之间的「锁问题」处理与单核环境下的情况有何异同?3、Java8中的更并发相关的改进,其优势体现在哪些地方?【葛】代码层面的注意点太多,很难简短回答,实际上我的《实战Java高并发程序设计》全书都在试图回答这个问题。单核没有正真的并发。java8提供了一些性能更好的,为并发优化的工具类4、并发处理中锁的使用【问】在并发处理中锁的使用有啥经验没有?【葛】并发量很高的时候,需要尽可能优化,比如书中提到的,热点分离,无锁等技术手段。5、阶段性高并发【问】如何才能应对阶

4、段性高并发?比如一般平时并发访问比较均衡,一到晚上8-12点并发量一下子翻了四五倍,这种情况要怎么应对?【葛】系统的设计应该要可以承受压力峰值。除了优化代码外,看看能不能把一些好时的操作在系统空闲时做掉,形成可用的缓存?6、多线程额外开销【问】个人项目肯定要节省预算,在计算资源紧张的情况下如何利用服务器资源?【葛】合理的使用线程。这也是《实战Java高并发程序设计》试图回答的问题,比如,可以使用无锁,使用actor并发模型等。如果有相关经验和心得,或是什么问题,欢迎加QQ群397196583。7、有效利

5、用服务器资源【问】针对现在多核大内存的硬件环境,java开发如何有效利用服务器资源【葛】合理使用多线程,缓存,是可以大幅度提高性能的8、高并发出现在那些应用场景【问】高并发出现在那些应用场景?在各场景中如何最简单的解决高并发问题(java代码本身或依靠其他组件)?【葛】很多场景会使用多线程,比如http服务器处理用户请求的时候。java内部就有不少方便使用的类。书中都有非常详细的说明。读书过程中有不明白的可以加群。9、异步任务【问】ExecutorService的submit一个异步任务,返回的Futu

6、re去取返回值的时候是要阻塞的,那这种带有返回值的submit的应用场景是什么?不是很明白它和直接在当前线程中去做这个任务在效果上有什么区别。【葛】首先,这个时候真实的操作是在另外一个线程中的,其次,你可以不用马上get那个值,你可以先去做其它事情,然后需要的时候再来get。这样中间的可能的等待时间就可以利用起来。10、开启的最大线程数【问】java环境下可以开启的最大线程数是怎么计算的?【葛】狭义上说和Xss已经java应用可用的操作系统内存大小有关。内存越大,可以开的线程越多,简单的理解可以认为你开

7、一个线程需要Xss大小的空间。至少需要Xss大小的空间,Xss是一个线程占的一部分。11、ExecutorService【问】ExecutorService使用shutdown线程没有关闭,shutdownNow关闭了这是为啥【葛】shutdownNow很暴力。在执行的线程会被强制杀死。可能导致数据不一致。shutdown不会马上杀死正在执行的线程(但是线程池不再接受新的任务)。可以使用awaitTermination等待所有线程结束。12、处理并发经验【问】处理并发还没什么经验,要注意些什么【葛】线程

8、安全是最重要的【Ambitor】然后再注意线程中制造的对象要及时让它GC,不然内存满了之后直接卡屎~~意思是不要出现产生的对象>=回收的对象,或者产生太多的对象,比如你写了一个程序,需要大数据量的离线计算,如果你产生的对象快要溢出的时候,会触发GC,GC回收了大部分后的没多久你又产生了大量对象,频繁触发GC会导致你程序慢的屎,GC会stoptheworld,线程多了上下文切换开销也大。13、成熟组件【问】请问高并发现在有哪些成熟组件?高并发

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。