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

    本文仅限个人理解

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

    乐观锁和悲观锁 ​

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

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

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

  • 相关阅读:
    [SDOI2011]消防
    10.15 上午 考试
    松鼠搬家 ( 切比雪夫距离 到 曼哈顿距离 )
    10.14 上午 考试
    10.13 下午
    bzoj2640 元素 线性基+贪心
    猪国杀 大模拟
    10.13 上午 考试
    10.12 两次考试
    阿狸和桃子的游戏
  • 原文地址:https://www.cnblogs.com/bigbigzhao/p/14172270.html
Copyright © 2011-2022 走看看