原子操作的实现原理

1. 介绍

本文是我看了并发编程网“聊聊并发”系列文章的总结。查看完整原文地址点我查看

本文分别讨论intel处理器何java是如何实现原子操作的

2. 基本概念定义

3. 处理器实现原子操作的方法

对于内存读写1个字节就是一个原子操作。这些最基本的原子操作是由处理器本身来保证的。

处理器保证原子操作的方法主要是:

3.1 总线锁定

我们以i++为例,通过下图可以发现在多处......

深拷贝、浅拷贝、延迟拷贝

1. 普通拷贝

基本类型复制,可以直接操作,属于值复制,是没问题的。

int apples = 5;

int pears = apples;

引用类型直接用等号赋值则会使得两个引用指向同一个对象。当通过一个引用对象修改数据时,另外一个引用的对象值也发生了改变。不能完成拷贝。因此就需要引入其他拷贝方法。

2.浅拷贝

通过重写object中的clone方法(需要继承Cloneable 然后重新clone方法,在clone方法里面调用父类的clone方法来完成对象初始化即可)完成需要拷贝对象的复制,但是,如果这个拷贝的对象中包含其他引用,则这个引用不会被真正的拷贝。

......

强引用、弱引用、软引用、虚引用

1、强引用(StrongReference)

最常见的引用方式。一般你通过new产生的都是强引用。

如果对象在GC引用链上是可达的,就一定不会被垃圾回收。

缺点:

如果使用通常的强引用,强引用本身会使得对象一直存留在内存中,这样就使得程序员必须自己决定什么时候移除缓存中的引用,这样对象才能被垃圾回收机制回收。

2、软引用(SoftReference)

内存不足时就会强制被GC,内存足的时候和强引用效果一样(即认为是存在引用关系,在引用链上可达,不会被GC)

适用场景:作为缓存比较合适,让JVM自动管理对象生命周期

3、弱引用(WeakReferen......