java并发和锁
sunjiaminaini
三年android工作经验
就职于中国最大外卖平台-饿了么
熟练android,java开发。
展开
-
synchronized和volatile理解
一,volatile关键字的可见性 要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下: 从图中可以看出: ①每个线程都有一个自己的本地内存空间–线程栈空间???线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作 ②对该变量操作完后,在某个时间再把变量刷新回主内存 关于JAVA内存模型,更详细的可参考: 深入理解原创 2017-08-08 15:56:13 · 3288 阅读 · 0 评论 -
Java并发之CountDownLatch、CyclicBarrier和Semaphore
这次说一下 JUC 中的同步器三个主要的成员:CountDownLatch、CyclicBarrier 和 Semaphore(不知道有没有初学者觉得这三个的名字不太好记)。这三个是 JUC 中较为常用的同步器,通过它们可以方便地实现很多线程之间协作的功能。(下面的代码出自 JDK 文档) CountDownLatch 直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门原创 2017-08-10 13:50:52 · 1150 阅读 · 0 评论 -
Fork/Join框架
什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+100原创 2017-08-13 16:19:20 · 2555 阅读 · 0 评论 -
公平锁和非公平锁
公平锁: Threads acquire a fair lock in the order in which they requested it 非公平锁: a nonfair lock permits barging: threads requesting a lock can jump ahead of the queue of waiting threads if the lock h原创 2017-08-28 10:51:21 · 561 阅读 · 0 评论 -
Java并发编程-无锁CAS与Unsafe类及其并发包Atomic
在前面一篇博文中,我们曾经详谈过有锁并发的典型代表synchronized关键字,通过该关键字可以控制并发执行过程中有且只有一个线程可以访问共享资源,其原理是通过当前线程持有当前对象锁,从而拥有访问权限,而其他没有持有当前对象锁的线程无法拥有访问权限,也就保证了线程安全。但在本篇中,我们将会详聊另外一种反向而行的并发策略,即无锁并发,即不加锁也能保证并发执行的安全性。 本篇的思路是先阐明无锁执转载 2017-08-31 19:00:25 · 258 阅读 · 0 评论