CAS : 即一种对内存中的数据进行操作的指令,而且该操作是原子的操作其过程如下:首先CPU将内存中的将要被修改的数据与预期的值进行比较,如果这两个值相等,CPU则会将内存中数值替换为新值,否则不做操作。使用非阻塞算法,…
分类:java并发
从分布式锁角度理解Java的synchronized关键字
分布式锁 分布式锁就以zookeeper为例,zookeeper是一个分布式系统的协调器,我们将其理解为一个文件系统,可以在zookeeper服务器中创建或删除文件夹或文件.设D为一个数据系统,不具备事务能力,在并发状态…
JVM学习之java线程安全&锁优化技术
以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》感谢作者。 1 线程安全的概念 线程安全的概念在书中作者讨论了很多,但都是比较抽…
Java基础学习:JUC篇
1.什么是JUC? JUC全称 java.util.concurrent 是在并发编程中很常用的实用工具类 2. volatile 关键字内存可见性 2.1 内存可见性问题,先看下面这段代…
Jdk1.6 JUC源码解析(27)-Exchanger
Jdk1.6 JUC源码解析(27)-Exchanger 作者:大飞 功能简介: Exchanger是一种线程间安全交换数据的机制。可以和之前分析过的SynchronousQueue对比一下:线程A通过Sy…
java并发编程(二十)----(JUC集合)CopyOnWriteArrayList介绍
这一节开始我们正式来介绍JUC集合类。我们按照List、Set、Map、Queue的顺序来进行介绍。这一节我们来看一下CopyOnWriteArrayList。 CopyOnWriteArrayList介绍 CopyOn…
Java高并发系列 — 锁
Java都有哪些锁? synchronized 和 reentranlock是最常见的,其中前者又JVM提供实现,后者有专门对应的java.util.concurrent包提供;同时后者功能更加丰富、灵活 悲观锁和乐…
java的锁池和等待池wait notify notifyall
锁池:某个线程中调用了对象锁的notify()方法之后,争夺执行权,进入锁池。 等待池:某个线程中调用了对象锁的wait()方法之后,该线程主动放弃执行权并等待唤醒,进入待待池。 public class ThreadT…
java 多线程同步锁
同步(阻塞) :是一种防止对共享资源访问导致的数据不一致的一种模式。 详细请参看操作系统。 在Java中,由于对多线程的支持,对同步的控制主要通过以下几个方法,synchronized,和wait(),noti…
java异步线程
使用一个ExecutorService,增加两个不可取消的子线程任务,并且获取他们的返回值。 @org.junit.Test public void testFuture() throws InterruptedEx…
Java并发和多线程2:3种方式实现数组求和
本篇演示3个数组求和的样例。 样例1:单线程 样例2:多线程。同步求和(假设没有计算完毕。会堵塞) 样例3:多线程。异步求和(先累加已经完毕的计算结果) 样例1-代码 package cn.fansunion.execu…
线程池的使用(第八章)
线程池的使用 Executor框架可以将任务的提交与任务的执行策略解耦开来。并非所有的任务都使用所有的执行策略,有些任务需要明确的指定执行策略,包括: 依赖性任务:提交给线程池的任务需要依赖其他的任务,那么就隐含地给执行…