lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

随笔分类 -  juc

摘要:内容来自《What Every Programmer Should Know About Memory》的 3.3.4 节 Multi-Processor Support。 这篇文章是按论文的格式写的,与其说是文章,说是书更加合适,毕竟总共有 114 页。作者 Ulrich Drepper 是真大牛 阅读全文
posted @ 2021-03-30 17:55 白露~ 阅读(242) 评论(0) 推荐(0) 编辑

摘要:数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的? 本文所指说的JVM是指Hotspot的6u23版本,下面首先介绍synch 阅读全文
posted @ 2019-05-16 19:35 白露~ 阅读(793) 评论(0) 推荐(0) 编辑

摘要:一、Java中synchronized关键字的作用 总所周知,在并发环境中多个线程对同一个资源进行访问很可能出现脏读等一系列线程安全问题。这时我们可以用加锁的方式对访问共享资源的代码块进行加锁,以确保同一时间段内只能有一个线对资源进行访问,在它释放锁之前其他竞争锁的线程只能等待。而synchroni 阅读全文
posted @ 2019-05-16 19:33 白露~ 阅读(3941) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/fly910905/article/details/79765381 同步代码块,同步方法,或者是用java提供的锁机制,我们可以实现对共享资源变量的同步控制。 技术点: 1、线程与进程: 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个 阅读全文
posted @ 2019-05-16 18:11 白露~ 阅读(2364) 评论(1) 推荐(0) 编辑

摘要:多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果 阅读全文
posted @ 2019-05-16 18:07 白露~ 阅读(697) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/wu1226419614/article/details/73740899 转载。 https://blog.csdn.net/wu1226419614/article/details/73740899 转载。 https://blog.csdn. 阅读全文
posted @ 2019-05-16 18:00 白露~ 阅读(1219) 评论(0) 推荐(0) 编辑

摘要:区别如下: 1. lock是一个接口,而synchronized是java的一个关键字,synchronized是内置的语言实现;(具体实现上的区别在《Java虚拟机》中有讲解底层的CAS不同,以前有读过现在又遗忘了。) 2. synchronized在发生异常时候会自动释放占有的锁,因此不会出现死 阅读全文
posted @ 2019-05-16 17:58 白露~ 阅读(302) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/asdf717/article/details/47252763 转载。 https://blog.csdn.net/asdf717/article/details/47252763 转载。 https://blog.csdn.net/asdf71 阅读全文
posted @ 2019-05-16 17:55 白露~ 阅读(786) 评论(0) 推荐(0) 编辑

摘要:转载:http://houlinyan.iteye.com/blog/1112535 基本概念 1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁 阅读全文
posted @ 2019-05-16 17:35 白露~ 阅读(3678) 评论(0) 推荐(0) 编辑

摘要:public final int getAndIncrement() { for (;;) { int current = get(); // 取得AtomicInteger里存储的数值 int next = current + 1; // 加1 if (compareAndSet(current, 阅读全文
posted @ 2019-05-08 22:56 白露~ 阅读(2098) 评论(0) 推荐(0) 编辑

摘要:PS: 在Java新版本开发的过程中,曾经传出Oracle要移除掉Unsafe类,引起了很大的恐慌,但在Java9发布时,发现jdk.internal.misc包路径出现了Unsafe类,不仅开放使用而且还增加了大量的注释方便理解,说明Java在开源的道路上依然在前进。 对于getXXVolatil 阅读全文
posted @ 2019-05-08 20:33 白露~ 阅读(437) 评论(0) 推荐(0) 编辑

摘要:废话 个人理解:java 出现的原因之一,就是对内存的管理;在c/c++,内存可以随心使用,超高的性能也伴有极高的风险;java极大的规避了这种风险,却也降低了程序运行的性能;那么java是否提供直接操作内存的方法呢?当然:Unsafe 类就是java提供的,对系统硬件级别的底层操作; 1,Unsa 阅读全文
posted @ 2019-05-08 20:32 白露~ 阅读(557) 评论(0) 推荐(0) 编辑

摘要:前提 参考资料: Java魔法类:sun.misc.Unsafe 在openjdk8下看Unsafe源码 Unsafe介绍 在Oracle的Jdk8无法获取到sun.misc包的源码,想看此包的源码可以直接下载openjdk,包的路径是: openjdk-8u40-src-b25-10_feb_20 阅读全文
posted @ 2019-05-08 20:28 白露~ 阅读(380) 评论(0) 推荐(0) 编辑

摘要:https://www.jianshu.com/p/2e5b92d0962e 1. Unsafe 类 Java 不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe 类提供了硬件级别的原子操作。 Unsafe 类在 sun.misc 包下,不属于 Java 标准。很多 Java 的基础类库 阅读全文
posted @ 2019-05-08 20:25 白露~ 阅读(448) 评论(0) 推荐(0) 编辑

摘要:版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/u010862794/article/details/72892300 说起JAVA并发编程,就不得不聊聊CAS(Compare And Swap)和AQS了(AbstractQueuedSynchronize 阅读全文
posted @ 2019-05-08 20:14 白露~ 阅读(473) 评论(0) 推荐(0) 编辑

摘要:关于AQS的一点总结 2017年03月13日 09:48:13 那只是一股逆流 阅读数:772 关于AQS的一点总结 2017年03月13日 09:48:13 那只是一股逆流 阅读数:772 关于AQS的一点总结 关于AQS的一点总结 2017年03月13日 09:48:13 那只是一股逆流 阅读数 阅读全文
posted @ 2019-05-08 20:08 白露~ 阅读(466) 评论(0) 推荐(0) 编辑

摘要:转载。 https://blog.csdn.net/zhangdong2012/article/details/79983404 转载。 https://blog.csdn.net/zhangdong2012/article/details/79983404 转载。 https://blog.csd 阅读全文
posted @ 2019-05-08 20:02 白露~ 阅读(635) 评论(0) 推荐(0) 编辑

摘要:AQS工作原理分析 一、大致介绍1、前面章节讲解了一下CAS,简单讲就是cmpxchg+lock的原子操作;2、而在谈到并发操作里面,我们不得不谈到AQS,JDK的源码里面好多并发的类都是通过Sync的内部类继承AQS而实现出五花八门的功能;3、本章节就和大家分享分析一下AQS的工作原理; 二、简单 阅读全文
posted @ 2019-05-08 19:58 白露~ 阅读(4414) 评论(1) 推荐(0) 编辑

摘要:一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLo 阅读全文
posted @ 2019-05-08 19:12 白露~ 阅读(426) 评论(0) 推荐(2) 编辑

摘要:--喜欢记得关注我哟【shoshana】--​ 前记 JUC中的Lock中最核心的类AQS,其中AQS使用到了CLH队列的变种,故来研究一下CLH队列的原理及JAVA实现 一. CLH背景知识 SMP(Symmetric Multi-Processor)。即对称多处理器结构,指server中多个CP 阅读全文
posted @ 2019-05-08 14:07 白露~ 阅读(4414) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示