Java并发整理

2022-02-21  本文已影响0人  ZoranLee
Java并发编程.png

CPU

多核心

多线程

        让同一个处理器上的多个线程同步执行共享处理器的执行资源

时间片轮转机制

进程

特点

1、进程是程序运行【资源】分配的最小单位资源
                CPU
                内存空间
                磁盘IO
                其他
2、进程是系统进行资源分配和调度的一个独立单位
3、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动

4、同一进程中多条线程共享该进程中的全部系统资源
5、进程和进程之间是相互独立

并行

        一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的

并发

线程

锁优化

volatile【可变的,需要跟踪】

  1、保证线程之间可见性
                    变量,线程之间不可见
  2、禁止指令重排序
                    指令重排序[cpu]
                        现状:compiler重新排顺序,提高运行效率【汇编】
                    DCL单例
                MESI协议
                    CPU缓存一致性协议【硬件】
                    多个CPU可见

CAS

  1、步骤
                    a、读取旧值为一个临时变量
                    b、对旧值的临时变量进行操作或者依赖旧值临时变量进行一些操作
                    c、判断旧值临时变量是不是等于旧值,等于则没被修改,那么新值写入.不等于则被修改,此时放弃或者从步骤1重试


  2、无锁优化 自旋
  3、ABA问题
                    AtomicStampedReference解决ABA问题,加版本号
  4、AtomicXXX
                    AtomicInteger
  5、ReentrantLock
Lock lock = new ReentrantLock();
       try{
      lock.lock();//加锁操作
  }finally{
      lock.unlock();
  }

Unsafe类【C、C++指针】

                getUnsafe 单例
                直接操作内存
                直接生产类实例
                CAS相关操作
上一篇 下一篇

猜你喜欢

热点阅读