如何保证线程安全
1|01.无状态
没有公共资源,线程一定安全
2|02.不可变
公共资源不可变,线程一定安全
3|0 3.无修改权限
不提供修改入口,属性私有
4|0 4.synchronized同步机制
同步方法和同步代码块,优先使用同步代码块,因为粒度小
5|05.Lock接口实现类ReentrantLock
显示锁ReentrantLock包含了公平锁、非公平锁、可重入锁、读写锁,使用时要在finally里手动释放
6|06.分布式锁
对于synchronized和lock对于单个节点可以保证线程安全,但是不同节点的分布式环境无法保证,这时可以使用分布式锁
比如:数据库分布式锁、zookeeper分布式锁、redis分布式锁
7|0 7.volatile
如果只要求多个线程之间的可见性,比如只是控制某个功能的开关,那么使用volatile就可以
8|08.ThreadLocal
9|09.线程安全集合
CopyOnWriteArrayList、ConCurrentHashMap、CopyOnWriteArraySet、ArrayBlockingQueue等等
10|010.CAS机制JDK
11|011.做数据隔离
比如对于同一用户处理使用单个线程,不存在多个线程对同一用户进行处理__EOF__
本文作者:blanset
本文链接:https://www.cnblogs.com/blanset/p/16800164.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/blanset/p/16800164.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
作者:blanset
出处:https://www.cnblogs.com/blanset/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)