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:只要不包含并发对共享数据进行运算,基本没问题。
相关推荐
懒洋洋大魔王6 分钟前
7.Java高级编程 多线程
java·开发语言·jvm
茶馆大橘11 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
星辰@Sea14 分钟前
服务注册中心对比及使用场景分析
java·云原生
马剑威(威哥爱编程)18 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
bug菌¹20 分钟前
滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
java·spring cloud·微服务
亿林科技网络安全35 分钟前
阿里云盘照片事件!网络安全警钟长鸣
网络·安全·web安全
MuseLss40 分钟前
HashMap高频面试知识点
java·开发语言·哈希算法
tyler-泰勒42 分钟前
初始c++:入门基础(完结)
java·开发语言·c++
玄客)1 小时前
MACCMS 远程命令执行漏洞复现(CVE-2017-17733)
学习·安全
重生之我要进大厂1 小时前
LeetCode 876
java·开发语言·数据结构·算法·leetcode