线程与高并发

本文仅限个人理解

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

乐观锁和悲观锁 ​

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

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

 

 

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

posted on 2020-12-22 12:14  bigbig钊  阅读(119)  评论(0编辑  收藏  举报