AtomicInteger原子整形与ReentrantLock锁
package Juc;import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReentrantLock;/*** 测试锁的可见性**/
public class ThreadSafeCache {volatile int Result=0; public int getResult() {return Result;}AtomicInteger atomicInteger=new AtomicInteger();ReentrantLock lock = new ReentrantLock();public void setResult() {/*lock.lock();try {Result++;} finally {lock.unlock();}*/atomicInteger.getAndIncrement();}public static void main(String[] args) {ThreadSafeCache syc= new ThreadSafeCache();for (int i = 0; i < 1000; i++) {new Thread(() -> {for (int j = 0; j < 10000; j++) {syc.setResult();}},String.valueOf(i)).start();}while(Thread.activeCount()>2){ //默认2个线程,main线程和Gc线程。Thread.yield(); //礼让线程}System.out.println(syc.Result+"======"+syc.atomicInteger);}}
AtomicInteger原子整形与ReentrantLock锁相关推荐
- java锁的概念,Java ReentrantLock锁机制概念篇
分享Java锁机制实现原理,细节涉及volatile修饰符.CAS原子操作.park阻塞线程与unpark唤醒.双向链表.锁的公平性与非公平性.独占锁和共享锁.线程等待await.线程中断interr ...
- 深入解析Java AtomicInteger 原子类型
深入解析Java AtomicInteger原子类型 在进行并发编程的时候我们需要确保程序在被多个线程并发访问时可以得到正确的结果,也就是实现线程安全.线程安全的定义如下: 当多个线程访问某个类时,不 ...
- java lock unlock_详解Java中的ReentrantLock锁
ReentrantLock锁 ReentrantLock是Java中常用的锁,属于乐观锁类型,多线程并发情况下.能保证共享数据安全性,线程间有序性 ReentrantLock通过原子操作和阻塞实现锁原 ...
- 打通JAVA与内核系列之一ReentrantLock锁的实现原理
简介:写JAVA代码的同学都知道,JAVA里的锁有两大类,一类是synchronized锁,一类是concurrent包里的锁(JUC锁).其中synchronized锁是JAVA语言层面提供的能力, ...
- 手撸JDK之ReentrantLock锁那点事
前置思想 首先明确一点ReentrantLock与synchronized最大的不同点在于synchronized是锁住了对象的头部,而ReentrantLock是类似于我们买一把锁,锁住我们不想因为 ...
- Java并发之ReentrantLock锁
简介 一种可重入的互斥锁,经由Java5引入,支持一个线程对资源的重复加锁.它和synchronized语句和方法访问的隐式监视器锁,有相同的基本行为和语义,但是功能更强大.之所以存在synchron ...
- go语言--竞争、原子函数、互斥锁
一.go语言竞争状态.原子函数.互斥锁 下面代码例子是展示并发下公共数据操作,通过原子函数和互斥锁怎么解决. package mainimport ("sync""run ...
- synchronized锁的级别和ReentrantLock锁(AQS)
目录 synchronized synchronized锁的特点 synchronized锁级别 无锁 偏向锁 轻量级锁 重量级锁 自旋锁 锁消除 ReentrantLock 公平锁和非公平锁 AQS ...
- 多线程与高并发(三):JUC包下新的同步机制:CAS,AtomicInteger,AtomicLong,ReentrantLock,CountDownLatch,ReadWriteLock等
CAS CAS 是一种乐观锁,syncronized 是一种悲观锁 AtomicInteger AtomicInteger count = new AtomicInteger(0); /*synchr ...
最新文章
- unix环境汇编语言常用工具
- python使用matplotlib中的errorbar函数可视化误差条、并自定义数据点标记、数据点大小、数据点颜色、数据点边缘颜色、误差棒颜色、误差棒线条宽度、误差棒边界线长度、误差棒边界线厚度等
- java 线程包_Java 多线程——工具包
- 【Paper】Learning to Predict Charges for Criminal Cases with Legal Basis
- 编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回
- Android Studio安装应用时报错 installation failed with message Failed to finalize session......
- C# ref跟out
- 连载四:Oracle升级文章大全(完结篇)
- 云合影程序_大学生发明AI一键合成云毕业照
- linux中ldap管理工具,LDAP管理工具Mac版-LDAP Admin Tool for Mac下载 V7.2-PC6苹果网
- CodeForces 1037E Trips(瞎搞)
- Cosy V3.1.3 简洁大气WordPress博客主题自适应个人自媒体网站模板(含积木部分插件)
- Arcpy处理月NDVI,最大合成法合成年NDVI
- CodeLite 16.0可以编译通过,但是在编辑器界面会显示找不到标准库头文件
- Filler Cell 与 Metal Fill差异
- Google Chrome 66可以下载啦
- Win11系统频繁断网怎么办?Win11网络不稳定的解决方法
- 苹果x用安兔兔测试html5,安兔兔跑分23万,苹果iPhone X怎么样?
- 专访Polychain创始人Olaf:我们只囤币,从不做空
- PAT乙级题目答案汇总 PAT (Basic Level) Practice (中文)
热门文章
- 2、Jupyter Notebook 快速入门
- 二分图 洛谷P2055 [ZJOI2009]假期的宿舍
- extentreports报告插件与testng集成(二)
- atitit.薄伽梵歌overview attilax 读后感
- 自动化测试基础篇--Selenium多窗口、句柄问题
- MongoDB如何释放空闲空间?
- ServletContext,ActionContext,ServletActionContext
- android 4 高级编程 第一章摘
- Utility.cs
- C++创建对象的三种方式