以前做过简单了解,奈何没写下来,今天在巩固一下:
CAS算法基于硬件平台的汇编指令,其中需要对乐观锁和悲观锁进行理解
悲观锁:所访问的变量会被其他线程来访问,必须先锁住;
乐观锁:所访问的变量不会被其他线程访问;
乐观锁是非阻塞的,所以不会出现死锁
CAS算法的实现,就是基于乐观锁的,在线程需要操作变量,会先拷贝个变量到自己内存中,等运算完成之后,在和原有变量进行对比,通常是有3个变量,一个是原有变量,一个是预期值,一个是新值。
剩下就是线程得到处理器的执行,然后执行过程中,会对比预期值(副本)与主存的数据,对比相同,则会执行下一步(根据),如果预期值与主存的数据不同,则放弃进行下一步。
参考:
https://blog.csdn.net/mashaokang1314/article/details/84335970