56.StampedLock

jdk8加入的,为了进一步优化读性能。比ReentrantReadWriteLock性能好。但是却无法完全替代。

特点:在使用读锁、写锁时都必须配合使用。

优化的点在于乐观读,乐观读没有加任何的锁。

乐观读,StampedLock支持tryOptimisticRead()方法(乐观读),读取完毕后需要做一次戳校验,如果校验通过,表示这期间确实没有写操作,数据可以安全使用,如果校验没有通过,需要重新获取读锁,保证数据安全。

@Slf4j
public class DataContainerStamped {private int data;private final StampedLock lock = new StampedLock();public DataContainerStamped(int data) {this.data = data;}public int read(int readTime) {//乐观读获取戳long stamp = lock.tryOptimisticRead();log.debug("optimistic read locking.... {}", stamp);try {Thread.sleep(readTime);} catch (InterruptedException e) {e.printStackTrace();}//在读操作期间,没有写线程对这个戳进行影响

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三、安全工程练习题(CISSP)

1.三、安全工程练习题(CISSP)

WordPress 高级缓存插件 W3 Total Cache Pro 详细配置教程

说起来有关 WordPress 缓存插件明月已经发表过不少文章了,但有关 W3 Total Cache Pro 这个 WordPress 高级缓存插件除了早期【网站缓存插件 W3 Total Cache,适合自己的才是最好的!】一文后就很少再提及了,最近因为明月另一个网站【玉满斋】因为某些性能上的需要准备更换缓存…

java —— 线程(一)

一、进程与线程 一个进程可以包含一个以上的线程,CPU 时间片切换的基本单位是线程。 二、创建线程 (一)继承 Thread 类 public class Task extends Thread{Override //重写run方法public void run(){System.out.pr…

心灵清闲

人本质上是喜欢清闲的生活的。所谓“清闲”,就是在为稻梁奔波的同时,还有一些可以用来喝酒、聊天、旅游的时间。 细细想来,一个人要活的惬意,光有生理上的清闲是不够的,还得有心灵的清闲。只是一个人要抵达生理上的清…

当前 Python 版本中所有保留字keyword.kwlist

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 当前 Python 版本中 所有保留字 keyword.kwlist [太阳]选择题 根据给定的Python代码,哪个选项是正确的? import keyword print("【执行】keyword.kwlist"…

【数据结构】KMP算法

1 KMP算法 KMP(Knuth-Morris-Pratt)算法是一种改进的字符串匹配算法,由D.E.Knuth、J.H.Morris和V.R.Pratt共同提出,用于在一个文本串(主串)中搜索一个词(模式串)的位置。KMP算法的关…

shell编程(四)—— 运算符

和其他编程语言一样,bash也有多种类型的运算符,本篇对bash的相关运算符做简单介绍。 一、运算符 1.1 算术运算符 常见的算术运算符,如加()、减(-)、乘(*)、除&#xf…

如何提高逻辑性?(小妙招)

在现代社会中,逻辑性是一种至关重要的思维能力。不论是在工作、学习还是生活中,逻辑清晰的人总能更好地解决问题和做出决策。然而,如何提高逻辑性却是许多人头疼的问题。本文将从六个方面详细探讨如何提升逻辑性,包括细心态度、逼…

【网络架构】Nginx

目录 一、I/O模型 1.1 Linux 的 I/O 1.2 零拷贝技术 1.3 网络IO模型 1.3.1 阻塞型 I/O 模型(blocking IO)​编辑 1.3.2非阻塞型 I/O 模型 (nonblocking IO)​编辑 1.3.3 多路复用 I/O 型 ( I/O multiplexing )​编辑 1.3.4 信号驱动式 I/O 模型 …

leetcode:67二进制求和

题目链接&#xff1a;67. 二进制求和 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string addBinary(string a, string b) {int stralen a.size(), strblen b.size();int curtc;int Maxlen max(stralen, strblen);vector<int> stra;vector<i…

Python 学习flask创建项目

1、使用pycharm创建flask项目 2、运行访问地址 3、可以看到访问地址内容 4、可以增加路由&#xff0c;尝试访问获取参数

2024年的高考人工智能,你能把握住么?还能卷么?

背景&#xff1a; 随着国家针对人工智能出台的政策越来越多了&#xff0c;很多国企也纷纷进入了该行业进行了布局&#xff0c;就连2024这次的高考的语文作文都是人工智能。 高考作文&#xff1a;新课标I卷 阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xf…

【教程】在Linux系统上安装Docker和Docker Compose

介绍 Docker是一个开源的引擎&#xff0c;可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。Docker Compose是在使用Docker容器部署分布式应用时的工具&#xff0c;可以定义哪个容器运行哪个应用。使用Compose&#xff0c;你只需定义一个多容器应用的yml文件…

探讨如何实现数据同步的架构和网络协议

一、背景 (一)当前为了后端网络程序的高并发和高可用&#xff0c;总是需要多台服务器一起协调工作&#xff0c;它们可能负责不同的模块(属于分布式)&#xff0c;也可能多台提供相同的功能(属于集群)。 (二)为了解决读写分离的主从架构的数据库同步问题&#xff0c;需要数据库…

智能电网与微电网:引领电力未来的创新力量

随着能源需求持续增长和环保压力日益加大&#xff0c;电力行业正面临前所未有的挑战与机遇。在这一背景下&#xff0c;智能电网和微电网作为新兴的技术应用方向&#xff0c;以其独特的优势和潜力&#xff0c;正逐步成为推动电力领域可持续发展的关键力量。 智能电网&#xff0…

leetcode387:字符串中的第一个唯一字符

题目链接&#xff1a;387. 字符串中的第一个唯一字符 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int firstUniqChar(string s) {unordered_map<char, int> mapch;for(auto c : s){mapch[c];}for(int i 0; i < s.size(); i){if(mapch[s[i]] …

【java问答小知识6】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知以及已经有经验的小伙伴的复习知识点

请解释Java中的双亲委派模型是什么&#xff1f; 回答&#xff1a;双亲委派模型是Java类加载机制的核心原则&#xff0c;它确保所有类加载器在尝试加载一个类之前&#xff0c;都会委托给它的父类加载器。 Java中的类路径&#xff08;Classpath&#xff09;是什么&#xff1f; 回…

2024.6.10 刷题总结

2024.6.10 **每日一题** 881.救生艇&#xff0c;依据题意可以看出这道题是一道贪心的题目&#xff0c;即越多地安排两个人坐一艘船更好&#xff0c;所以我们想到每次都用最小和最大的组合&#xff0c;判断是否能够合并&#xff0c;故需要先进行排序&#xff0c;然后利用双指针…

svnadmin备份和还原

背景 客户操作系统重启文件损坏&#xff0c;操作系统无法重启&#xff0c;只能恢复到之前的快照。恢复快照导致最近操作的数据丢失&#xff0c;需要进行恢复。 客户的IT任务已经把SVN数据所在盘挂到新操作系统F盘&#xff0c;试用svnadmin dump/load命令进行备份和恢复。 当…

使用 AWK 为特定行添加编号并打印

在数据处理和文件操作中&#xff0c;经常需要根据特定规则处理文本文件。在这篇博文中&#xff0c;我们将展示如何使用 AWK 这一强大的文本处理工具&#xff0c;为不以字母 A、B、C、D 开头的行添加编号并打印&#xff0c;而直接打印以这些字母开头的行。 为什么选择 AWK&…