深入了解Java并发——《Java Concurrency in Practice》11.性能与可伸缩性

本文深入探讨Java并发编程中的性能与可伸缩性问题,依据《Java Concurrency in Practice》11章节展开,讲解了Amdahl定律、线程开销以及如何通过减少锁竞争来提升并发性能。强调了在优化前确保程序正确性的重要性,提出了锁细化、锁分段、使用ReadWriteLock和原子变量等策略。
摘要由CSDN通过智能技术生成

本章内容介绍了并发编程中,最吸引人的性能问题。什么会导致性能问题,如何解决性能问题,我们应该在什么情况下着手解决性能问题?

首先要保证程序能正确运行,然后仅当程序的性能需求和测试结果要求程序执行的更快时,才应该设法提高它的运行速度

11.1 对性能的思考

尽管使用多个线程的目标是提升整体性能,但与单线程的方法相比,使用多个线程总会引入一些额外的性能开销。

要想通过并发来获得更好的性能,需要做好两件事:
1. 更有效的利用现有处理资源
2. 在出现新的处理资源时使程序尽可能的利用这些资源

11.1.1 性能与可伸缩性

可伸缩性是指:当增加计算资源时(CPU、内存、存储容量或I/O带宽),程序的吞吐量或者处理能力能相应的增加。

再进行可伸缩性调优时,其目的是设法将问题的计算并行化,从而能利用更多的计算资源来完成更多的工作。

11.1.2 评估各种性能权衡因素

避免不成熟的优化。首先使程序正确,然后再提高运行速度——如果它运行的不够快。

在大多数性能决策中都包含有多个变量,并且非常依赖与运行环境。在使某个方案比其他方案“更快”之前,首先问自己一些问题:
- 更快 的含义是什么
- 该方法在什么条件下运行的更快,低负载还是高负载、大数据集还是小数据集,能否通过测试结果来验证
- 这些条件在运行环境中发生的频率,能否通过测试结果验证
- 在其他不同条件的环境中能否使用这些代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值