并发情况下三种线程/并发安全
发布日期:2021-05-06 23:22:02 浏览次数:7 分类:技术文章

本文共 722 字,大约阅读时间需要 2 分钟。

1. 主存内小的共享变量线程安全

[JMM,工作内存,主存屏障,volatile+cas]

2.磁盘内数据库读写并发安全

[对version的cas]
因为读,写是通过执行sql语句实现的,而不是直接像指针访问主存一样,因而没有情况1的可见性问题,直接对version进行CAS即可
[由于数据库事务中又包含多个sql语句,所以在前面提到的针对单个sql语句竞争的基础上,更上一层要考虑事务隔离性问题,如脏读,不可重复读,幻读,,,前两者一般涉及update,delete,直接锁行即可,幻读需要锁表,事务级别对应对表行,表上锁的处理过程]
read commited解决了脏读也就解决了基本问题即对错问题,像是不可重复读,幻读则看业务场景需不需要,比如涉及钱转账的用户容忍度低,但像是热榜这种用户暂时读的不是最新数据也能接受,还有知乎用户点赞数。且一般情况下网站内的大部分数据[回答,文章,想法---哪怕是问题编辑这种公共的由于业务原因一般不会有高并发场景]只有其拥有者账号才能改,其它人并发能改的也就是点赞数,收藏数这种[即使是评论也只能该评论拥有者可以删除或发布],所以在实际业务场景中,对数据库某些内容的更新或修改高并发主要是数字。因为创造某东西或删除某东西一般是私有的,只有拥有者账户有权限。
[搜索关键字累积次数,阅读量,点赞数,转发数]
看来主要业务场景是搜索结果(但结果本身是读多写少的,用户主要是浏览)

建议看下面的文章

3.分布式缓存

[除了对缓存的并发读写安全外还要考虑将缓存内容更新到数据库中-因为缓存大小有限,需要结合LRU算法更新回数据库;而情况1是单个变量,而情况二默认磁盘大小无限]

建议看下面文章[都是转载的]

上一篇:一个前端JQuery写一个通过clip属性来写的input+select的支持模糊查询的下拉框
下一篇:java知识点杂记

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月23日 02时57分31秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章