- 博客(4)
- 收藏
- 关注
原创 Java实现原子操作
在处理器中会使用总线锁或者缓存锁保证原子性,在java中可以通过锁和循环CAS的方式来实现原子操作1.使用CAS实现原子操作JVM中的CAS操作使用了处理器提供的CMPXCHG指令(交换指令)实现的。自旋CAS实现的基本思路就是 循环进行CAS操作直到成功。2.CAS实现原子操作的三大问题1)ABA问题如果一个值原来是A,变成了B,又变回了A,那么使用CAS进行检查时会发现它的值没有发生改变,而实...
2018-03-11 14:58:04
581
原创 volatile关键字
volatile是一个类型修饰符,被volatile修饰的变量是内存可见的,即如果一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。是线程同步的方法之一,相较于 synchronised 是一种较轻量的同步策略,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。1.volatile的实现原理 有volatile变量...
2018-03-10 21:31:50
141
原创 Java 之 JUC _线程池
实现多线程的方法之一:线程池一、线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。 避免创建与销毁额外开销,提高了响应的速度二、线程池的体系结构: java.util.concurrent.Executor:负责线程的使用与调度的根接口 |--ExecutorService 子接口:线程池的主要接口, ...
2018-03-07 20:36:36
253
原创 synchronized的实现原理
利用synchronized实现同步的基础:java中的每一个对象都可以作为锁,synchronized用的锁是存在java对象头里的,具体表现为以下三种形式。 (1)对于普通同步方法,锁是当前实例对象。 (2)对于静态同步方法,锁是当前类的Class对象。 (3)对于同步方法块,锁是synchronized括号例配置的对象。当一个线程试图访问同步代码块时,它首先必须得到锁,退出或者抛出异常...
2018-03-05 16:32:47
223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人