影响并发性能的原因

本文探讨了影响并发性能的关键因素,包括上下文切换的性能损耗及如何通过无锁并发编程、CAS算法、使用最少线程和协程来减少切换。此外,还介绍了死锁的概念,以及避免死锁的几种策略,如避免同时获取多个锁和确保锁的正确释放。
摘要由CSDN通过智能技术生成

影响并发性能的原因

 

上下文切换

CPU 通过时间片分配来并发执行任务,当前任务执行一个时间片后就会切换到下一个任务 ,切换之前会保存当前任务的状态。从保存这个任务的状态到再加载的一次过程就是一次上下文的切换。

过多的上下文切换会带来一些不必要的性能消耗,减少上下文切换的方法有以下几个:

  • 无锁并发编程

  • CAS算法

  • 使用最少线程和使用协程

无锁并发编程

多线程竞争锁时就是引起上下文切换,所有通过避免加锁的方式可以减少上下文切换,例如对数据进行Hash取模分段处理,固定的线程去处理固定的数据段。

CAS算法

通过比较,再去切换,实现了无锁的算法不过会出现ABA问题和自旋时间过长

使用最少线程

字面意思,别让大量线程处于等待状态

协程

单线程里实现多任务调度

死锁

两个或者多个线程互相占用对方想要获取的锁,形成一个占用环,导致系统不可以用。

 

 private void deadLock() {
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (A) {
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedExce
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值