![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC并发编程
文章平均质量分 90
Rookie℘
样样通,样样松
展开
-
JUC并发编程(四)完结
读写锁:ReentrantReadWriteLock(悲观锁)和StampedLock(乐观锁)原创 2023-11-29 20:24:07 · 733 阅读 · 0 评论 -
JUC并发编程(三)
ThreadLocal不解决线程间共享变量的问题ThreadLocal适用于变量在线程间隔离且在方法间共享的场景ThreadLocal通过隐式的在不同线程内创建独立实例副本避免了实例线程安全的问题每个线程都有一个独立的属于自己的Map并维护了ThreadLocal对象与具体实例映射,该Map只有它的持有线程才可以访问,所以不存在线程安全及所的问题ThreadLocalMap的Entry对ThreadLocal的引用为弱引用,避免了ThreadLocal对象无法被回收的问题。原创 2023-11-26 21:38:02 · 936 阅读 · 0 评论 -
JUC并发编程(二)
执行CAS的时候将内存地址的值V与预期原值B进行比较,如果相匹配,那么处理器会自动将该位置值更新为新值A,如果不匹配,处理器不会做任何操作或者重试——自旋,多个线程同时执行CAS操作,只有一个会成功原创 2023-11-15 21:55:48 · 75 阅读 · 0 评论 -
JUC并发编程(一)
悲观锁:认为自己在使用数据的时候一定有别的线程来修改数据,因为在获取数据的时候一定会先获取锁,确保数据不会被其他线程所修改。(适合写操作的场景) 乐观锁:认为自己在使用数据的时候不会有别的线程来修改数据或资源,所以不会加锁,在java编程中使用的是无锁编程来实现的,只是在更新数据的时候去判断,有没有别的线程去修改当前数据。如果数据没更新,当前线程将自己的修改操作进行写入,如果更新了的话则根据不同的方式执行不同的操作,比如放弃修改、或者重试抢锁等等(适合读操作)原创 2023-11-07 21:05:23 · 89 阅读 · 0 评论