首页 > 其他分享 >并发情况如何提升同步代码块的性能

并发情况如何提升同步代码块的性能

时间:2022-11-04 14:07:56浏览次数:42  
标签:同步 代码 并发 加锁 线程 切换 上下文 性能


使用并发编程的目标是为了提升系统性能,引入多线程后,其实会引入额外的开销,如线程之间的协调、增加的上下文切换,线程的创建和销毁,线程的调度等等。过度或不恰当的使用,可能会导致多线程程序性能甚至比单线程还要低。

影响性能的因素

上下文切换

是指CPU 从一个进程或线程切换到另一个进程或线程。一次上下文切换花费5000~10000个时钟周期,几微秒。在上下文切换过程中,CPU会停止处理当前运行的程序,并保存当前程序运行的具体位置以便之后继续运行。

内存同步

一般指加锁,对加锁来说,需要增加额外的指令,这些指令都需要刷新缓存等等操作。

提升性能的方法

减少锁的粒度

使用锁的时候,锁所保护的对象是多个,当这些多个对象其实是独立变化的时候,不如用多个锁来一一保护这些对象。但是如果有同时要持有多个锁的业务方法,要注意避免发生死锁。

缩小锁的范围

对锁的持有实现快进快出,尽量缩短持由锁的的时间。将一些与锁无关的代码移出锁的范围,特别是一些耗时,可能阻塞的操作。

锁分段

ConcurrrentHashMap就是典型的锁分段。

替换独占锁

在业务允许的情况下:
1、使用读写锁,
2、用自旋CAS
3、使用系统的并发容器


标签:同步,代码,并发,加锁,线程,切换,上下文,性能
From: https://blog.51cto.com/u_15861563/5823703

相关文章

  • 并发安全
    在并发的情况下使用和调度一个类,这个类总是能表现出正确的行为,那么我们就说这个类是并发安全的类。类线程安全的表现为:操作的原子性和内存的可见性。怎么才能做到类的线程......
  • JAVA并发容器-ConcurrentHashMap 1.7和1.8 源码解析
    HashMap是一个线程不安全的类,在并发情况下会产生很多问题,详情可以参考​​HashMap源码解析​​;HashTable是线程安全的类,但是它使用的是synchronized来保证线程安全,线程竞争......
  • CountDownLatch并发工具类
    作用CountDownLatch允许一个或多个线程等待其他线程完成操作,相当于一个加强版的join方法。核心方法CountDownLatch的构造函数接收一个int类型的参数作为计数器,如果你想等待N......
  • Elasticsearch 同时使用should和must 只有must生效,java代码解决方案
    ES中同时使用should和must导致只有must生效解决方案失效的原因就是must和should在一起使用会不生效,如果全部都是must是不影响的.加入一个字段需要有类似url=aor......
  • CyclicBarrier并发工具类
    作用让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开放,所有被屏障拦截的线程才会继续运行。核心方法CyclicBarrier(intparties):默认构......
  • Unity 常用功能代码工具集
    Unity常用功能整理安卓摄像头的调用请求与拍摄、截图//////————————SakuraNeko————————//////博客园:https://www.cnblogs.com/sakuraneko//......
  • Rocksdb 的优秀代码(二)-- 工业级 打点系统 实现分享
    文章目录​​前言​​​​数据结构选型​​​​打点代码设计​​​​耗时打点​​​​请求计数打点​​​​打点总结​​前言一个完善的分布式系统一定是需要完善的打点统计......
  • Rocksdb 的优秀代码(三)-- 工业级 线程池实现分享
    文章目录​​前言​​​​1.Rocksdb线程池概览​​​​2.Rocksdb线程池实现​​​​2.1基本数据结构​​​​2.2线程池创建​​​​2.3线程池调度线程执行​​​​2.......
  • 在PetaLinux工程中导出所有关键模块代码
    PetaLinux工程会自动下载代码并编译。很多时候,工程师需要修改代码,加入调试信息。使用下列脚本,可以一次性导出所有关键模块的代码。脚本中,为了保持兼容性,导出了MPSoC和Vers......
  • 大文件上传如何做断点续传源代码
    ​需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以500G来进行限制。PC端全平台......