zoukankan      html  css  js  c++  java
  • 线程与高并发

    本文仅限个人理解

    每个程序都是一个独立的进程,每个进程由至少一个线程组成。线程中有两个概念,串行和并行,串行和并行其实跟同步和异步是一样的。串行和同步一样,执行的程序会有一个顺序,当A执行完之后才会执行B。并行和异步一样,在执行前后顺序不会对结果造成影响的情况下一起执行。但是并行还会有一种情况,就是高并发。在一个程序执行多次的时候,jvm会为了压榨cpu使运行结果发生改变。试想一下,一个人访问,结果没问题,几个人访问也没问题,当不知道多少人一起访问的时候,运行代码的顺序会逐渐发生改变。在某一次中使运行结果出现错误。有一个东西可以防止这个情况,那就是锁。

    乐观锁和悲观锁 ​

     悲观锁就是为了防止执行过程中出现意外,在运行的代码前边加上[synchronization],表示当这个进程运行时其他进程想要运行需要排队,不能被打断。

    ​ 乐观锁是每次运行时都往最好的方向想,认为每次运行时都不会被打断。他的核心算法是CAS,他赋值的时候分为3个过程:内存值,预期值,新值。如果过程中没有被打断,则赋值,  在赋新值的过程中会再次读取当前数据并且对比之前拿到的内存值,如果内存值没有发生改变则赋值,如果发生改变则再执行一遍流程。直到成功为止。

    ----后续理解会继续添加

  • 相关阅读:
    【题解】洛谷P1896 [SCOI2005] 互不侵犯(状压DP)
    [BZOJ4383][POI2015] Pustynia-[线段树+dp+拓扑排序]
    [agc016E]Poor Turkeys
    [arc082E]ConvexScore-[凸包]
    [BZOJ4011][HNOI2015]落忆枫音-[dp乱搞+拓扑排序]
    [arc062E]Building Cubes with AtCoDeer
    [arc079F]Namori Grundy
    [agc006F]Blackout
    [BZOJ4444][SCOI2015]国旗计划-[ST表]
    [BZOJ1007][HNOI2008]水平可见直线-[凸包]
  • 原文地址:https://www.cnblogs.com/bigbigzhao/p/14172270.html
Copyright © 2011-2022 走看看