多线程的一点小结

最近看多线程比较多,对于volatile,syn,CAS,JMM模型(主内存,工作内存)这些概念有些理解。volatile,syn工作机制等。
以及对于多线程中可见性,原子性的理解。
随着对这些基础的掌握和理解,我觉得自己对于多线程方面的能力有一定的提升。

可见性的问题上,volatile是怎么解决可见性的。而syn又是如何解决可见性的。
对于原子性的问题上,syn又是怎么解决的。而syn是悲观锁,在处理共享数据问题的时候,效率可能比较差。因为当数据被修改的时候,其他的线程不能对数据进行读操作。
由此就引申出了CAS锁(乐观锁)这个机制。

同时,在练习的过程中,也踩了一些坑。也能够基于两种方式去实现小demo。
对于实现Runable接口来说,它适合处理共享数据,因为多个线程可以执行同一个Runable实现类中的run方法,且只有一个该实例化对象,那么它里面的属性也是唯一的。
而对于继承Thread类的方式,可以采用静态变量的方式来实现共享数据。

  • CAS锁实现逻辑:
    V内存地址 A旧值 B期望值
    线程1在修改共享变量的时候,会拿A和内存地址V上的实际值比较,如果相等,则将A修改为B。
    如果不相等,则拿地址V上的值来更新A值,然后再次修改,执行上面这个逻辑。
    -- 总结:更新的时候去判断A和V上的值是否相等。在数据库的体现就是条件:where stock = A ,数据库的值就是V
    库存数量为A这个值那么就执行sql更新语句
posted @ 2022-09-23 16:32  pzistart  阅读(74)  评论(0编辑  收藏  举报