首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
時光以北
掘友等级
Java小疯子
|
世界和平有限公司
Java小疯子
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
21
文章 21
沸点 0
赞
21
返回
|
搜索文章
最新
热门
J.U.C 之CountDownLatch
CountDownLatch 与 CyclicBarrier 有点相似。 用给定的计数初始化 CountDownLatch。由于调用了 #countDown() 方法,所以在当前计数到达零之前,#await() 方法会一直受阻塞。之后,会释放所有等待的线程,#await() 的…
J.U.C 之CyclicBarrier
它允许一组线程互相等待,直到到达某个公共屏障点 (Common Barrier Point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 Barrier 在释放等待线程后可以重用,所以称它为循环( Cyclic…
JUC之深入分析 CAS
CAS ,Compare And Swap ,即比较并交换。Doug Lea 大神在实现同步组件时,大量使用CAS 技术,鬼斧神工地实现了Java 多线程的并发操作。 整个 AQS 同步组件、Atomic 原子类操作等等都是基 CAS 实现的,甚至 ConcurrentHash…
java并发之Condition
在没有 Lock 之前,我们使用 synchronized 来控制同步,配合 Object 的 #wait()、#notify() 等一系列方法可以实现等待 / 通知模式。 在 Java SE 5 后,Java 提供了 Lock 接口,相对于 synchronized 而言,L…
ReentrantReadWriteLock 实现原理
重入锁 ReentrantLock 是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而,读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读写锁。 读写锁维护着一…
ReentrantLock 实现原理
ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于 synchronized 的使用,但是 ReentrantLock 提供了比 synchronized 更强大、灵活的锁机制,可以减少死锁发生的概率。 一个可重入的互斥锁定 Lock,它具有与使用 …
Java内存模型(JMM)
在 JMM 中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在 happens-before 关系。 happens-before 原则非常重要,它是判断数据是否存在竞争、线程是否安全的主要依据,依靠这个原则,我们解决在并发环境下两操作之间是否可能存在冲…
浅谈 volatile 实现原理
synchronized 是一个重量级的锁,的 volatile 则是轻量级的 synchronized ,它在多线程开发中保证了共享变量的“可见性”。如果一个变量使用 volatile ,则它比使用 synchronized 的成本更加低,因为它不会引起线程上下文的切换和调度…
AbstractQueuedSynchronizer 原理分析
AQS ,AbstractQueuedSynchronizer ,即队列同步器。它是构建锁或者其他同步组件的基础框架(如 ReentrantLock、ReentrantReadWriteLock、Semaphore 等),J.U.C 并发包的作者(Doug Lea)期望它能够成…
Synchronized 实现原理
对于Java代码来说,或许最常用的同步实现就是同步方法(代码块)。其中同步代码块是通过使用 monitorenter 和 monitorexit 实现的,而同步方法却是使用 ACC_SYNCHRONIZED 标记符隐示的实现,原理是通过方法调用指令检查该方法在常量池中是否包含 …
下一页
个人成就
文章被点赞
190
文章被阅读
99,056
掘力值
2,206
关注了
6
关注者
93
收藏集
1
关注标签
14
加入于
2018-08-01