Java并发问答集锦-并发回答..docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java并发问答集锦-并发回答.

《实战Java高并发程序设计》自上市以来,得到了Java并发学习爱好者的一致好评,有很多读者来信,葛一鸣老师也做了很多专业问答,现在摘记出来,希望大家在学习高并发的同时,能吸收大家的经验,兼容并包、集采众长,探索出自己的并发策略,也希望大家多多在QQ群397196583里交流,葛老师都会抽时间回答,群里的Java朋友也会群策群力!1、服务器请求增多【问】经常碰到类似的面试题:服务器同一时刻最多接收1000个请求,现在一下来了2000个,如何处理【葛】缓存可以使用一些过期机制,尽可能不要溢出。还有就是可以使用类似软引用 弱引用做不太重要的缓存。【问】缓存区爆掉,怎么处理?用什么样的抛弃策略?【葛】可以用生产者消费者模式,先放在一个缓冲区中2、多线程额外开销【问】在一般的程序中,会使用多线程提高效率,应付高并发,但是,多线程会有额外的开销、锁、和一些其他的副作用,这样就会无形之中影响了高并发。请问,在多线程、高并发直接如何权衡他们【葛】线程数量要合理。减少线程之间的竞争,还有,就是可以使用无锁。对于热点数据,还可以进行热点分离3、Java 8并发相关【问】1、当下多核的服务器比比皆是,作为开发人员,从代码角度考虑,有什么需要的地方?2、多核环境下多线程之间的「锁问题」处理 与 单核环境下的情况有何异同?3、Java8中的更并发相关的改进,其优势体现在哪些地方?【葛】代码层面的注意点太多,很难简短回答,实际上我的《实战Java高并发程序设计》全书都在试图回答这个问题。单核没有正真的并发。 java8提供了一些性能更好的,为并发优化的工具类4、并发处理中锁的使用【问】在并发处理中锁的使用有啥经验没有?【葛】并发量很高的时候,需要尽可能优化,比如书中提到的,热点分离,无锁等技术手段。5、阶段性高并发【问】如何才能应对阶段性高并发?比如一般平时并发访问比较均衡,一到晚上8-12点并发量一下子翻了四五倍,这种情况要怎么应对?【葛】系统的设计应该要可以承受压力峰值。除了优化代码外,看看能不能把一些好时的操作在系统空闲时做掉,形成可用的缓存?6、多线程额外开销【问】个人项目肯定要节省预算,在计算资源紧张的情况下如何利用服务器资源?【葛】合理的使用线程。这也是《实战Java高并发程序设计》试图回答的问题,比如,可以使用无锁,使用actor并发模型等。如果有相关经验和心得,或是什么问题,欢迎加QQ群397196583。7、有效利用服务器资源【问】针对现在多核大内存的硬件环境,java开发如何有效利用服务器资源【葛】合理使用多线程,缓存,是可以大幅度提高性能的8、高并发出现在那些应用场景【问】高并发出现在那些应用场景?在各场景中如何最简单的解决高并发问题(java代码本身或依靠其他组件)?【葛】很多场景会使用多线程,比如http服务器处理用户请求的时候。java内部就有不少方便使用的类。书中都有非常详细的说明。读书过程中有不明白的可以加群。9、异步任务【问】ExecutorService的submit一个异步任务,返回的Future去取返回值的时候是要阻塞的,那这种带有返回值的submit的应用场景是什么?不是很明白它和直接在当前线程中去做这个任务在效果上有什么区别。【葛】首先,这个时候 真实的操作是在另外一个线程中的, 其次,你可以不用马上get那个值,你可以先去做其它事情,然后需要的时候 再来get。这样 中间的可能的等待时间就可以利用起来。10、开启的最大线程数【问】java环境下可以开启的最大线程数是怎么计算的?【葛】狭义上说 和Xss已经 java应用可用的操作系统内存大小有关。内存越大,可以开的线程越多,简单的理解可以认为 你开一个线程 需要Xss大小的空间。至少需要Xss大小的空间,Xss是一个线程占的一部分。11、ExecutorService【问】ExecutorService 使用shutdown 线程没有关闭, shutdownNow 关闭了 这是为啥【葛】shutdownNow 很暴力。在执行的线程会被强制杀死。可能导致数据不一致。shutdown不会马上杀死 正在执行的线程(但是线程池不再接受新的任务)。可以使用awaitTermination等待所有线程结束。12、处理并发经验【问】处理并发还没什么经验,要注意些什么【葛】线程安全是最重要的【Ambitor】然后再注意线程中制造的对象要及时让它GC,不然内存满了之后 直接卡屎~~意思是不要出现产生的对象=回收的对象,或者产生太多的对象,比如你写了一个程序,需要大数据量的离线计算,如果你产生的对象快要溢出的时候,会触发GC, GC回收了大部分后的没多久你又产生了大量对象,频繁触发GC 会导致你程序慢的屎,GC会stop the world ,线程多了上下文切换开销也大。13、

文档评论(0)

bhzs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档