Java——》如何保证线程的安全性

推荐链接:

总结------》【Java】

总结------》【Mysql】

总结------》【Redis】

总结------》【Kafka】

总结------》【Spring】

总结------》【SpringBoot】

总结------》【MyBatis、MyBatis-Plus】

总结------》【Linux】

总结------》【MongoDB】

总结------》【Elasticsearch】

Java------》如何保证线程的安全性

Q:如果存在临界(共享)资源,如何保证线程的安全性?

A:加锁,怎么做?不加锁,怎么做?

一、加锁

1、悲观锁

synchronizedLock(ReentrantLock,ReadWriteLock)

2、乐观锁

CAS

Q:CAS真的无锁吗?

A:

Java层面:没锁,基于Unsafe实现

C++层面:有锁,lock cmpexchg

二、不加锁

  1. ThreadLocal:让多个线程将共享资源copy到本地,没有多线程操作共享资源的问题
  2. volatile:只要不包含并发对共享数据进行运算,基本没问题。
相关推荐
陈文锦丫3 小时前
MQ的学习
java·开发语言
乌暮3 小时前
JavaEE初阶---线程安全问题
java·java-ee
爱笑的眼睛113 小时前
GraphQL:从数据查询到应用架构的范式演进
java·人工智能·python·ai
Seven974 小时前
剑指offer-52、正则表达式匹配
java
代码or搬砖4 小时前
RBAC(权限认证)小例子
java·数据库·spring boot
青蛙大侠公主4 小时前
Thread及其相关类
java·开发语言
Coder_Boy_4 小时前
DDD从0到企业级:迭代式学习 (共17章)之 四
java·人工智能·驱动开发·学习
2301_768350234 小时前
MySQL为什么选择InnoDB作为存储引擎
java·数据库·mysql
派大鑫wink4 小时前
【Java 学习日记】开篇:以日记为舟,渡 Java 进阶之海
java·笔记·程序人生·学习方法