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

news/2024/11/29 22:44:41/

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

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

  • 一、加锁
    • 1、悲观锁
    • 2、乐观锁
  • 二、不加锁

Q:如果存在临界(共享)资源,如何保证线程的安全性?
A:加锁,怎么做?不加锁,怎么做?

一、加锁

1、悲观锁

synchronizedLock(ReentrantLock,ReadWriteLock)

2、乐观锁

CAS

Q:CAS真的无锁吗?
A:
Java层面:没锁,基于Unsafe实现
C++层面:有锁,lock cmpexchg

二、不加锁

  1. ThreadLocal:让多个线程将共享资源copy到本地,没有多线程操作共享资源的问题
  2. volatile:只要不包含并发对共享数据进行运算,基本没问题。

http://www.ppmy.cn/news/1200307.html

相关文章

SRC | CORS跨资源共享漏洞

CORS跨资源共享 跨源资源共享 (CORS) 是一种浏览器机制,允许网页使用来自其他页面或域的资产和数据。 大多数站点需要使用资源和图像来运行它们的脚本。这些嵌入式资产存在安全风险,因为这些资产可能包含病毒或允许服务器访问黑客。 CORS响应头 CORS通…

不用流氓软件,如何在户外使用手机听下载到家中电脑里的音乐文件呢?

文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是本教程使用环境:1 群晖系统安装audiostation套件2 下载移动端app3 内网穿透,映射至公网 很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿,于是打开手…

国际物流社交销售玩法拆解(一):物流通知这么发,节省80%成本!

在物流运输和信息互联网完美结合的今天,我们享受着物流体系带来的极大便利: 线上购物发货后,收到发货通知,了解商品运输进度; 最后一公里派送时,收到派送推送,确定大概何时能收到商品&#xff…

【Unity细节】为什么UI移动了锚点,中心点和位置,运行的时候还是不在设置的位置当中

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏:unity细节和bug 😶‍🌫️优质专栏 ⭐【…

Java_类和对象详解

文章目录 前言简单认识类类定义和使用类的实例化引用的一些注意事项 类和对象的说明及关系this引用为什么要有this引用this应用this特性 构造方法构造特性及应用用this简化用idea编译器快捷创建构造 封装封装的概念访问限定符 封装的扩展-包包的概念导入包中的类自定义包常见的…

Qt 继承QAbstractListModel实现自定义ListModel

1.简介 QAbstractListModel类提供了一个抽象模型,可以将其子类化以创建一维列表模型。 QAbstractListModel为将其数据表示为简单的非层次项目序列的模型提供了一个标准接口。它不直接使用,但必须进行子类化。 由于该模型提供了比QAbstractItemModel更…

香港条形码如何申请 香港条码注册条件 香港条码申请流程

在进行商 品销 售的过程中,香港条形码是一个必不可少的工具。它是一种唯 一的商品识别码,用于标识和追踪产品。下面,我们将从注册条件和申请流程两个方面,为您详细介绍香港条形码的申请过程。 一、香港条码注册条件 在申请香港条…

C风格数组和std::array有什么区别

2023年11月6日,周一下午 C风格数组在 C/C 中没有值语义。当将内置数组作为函数参数或返回值时,实际传递的是指向数组首元素的指针,而不是整个数组的副本。这意味着对函数参数中的数组或返回值返回的数组进行修改会影响原始数组,因…