并发编程是java中难度较高且很重要的一部分知识内容。它涉及的知识点也很多。所以,陆续会以几篇文章对其进行概述。本篇是并发编程的第一篇,介绍基本的并发知识,如下为本篇文章的大纲:

【解释】






【解释】
【注意】从NEW状态出发后,线程不能再回到NEW状态,同理,处于TERMINATED的线程也不能再回到RUNNABLE状态。
































【注】在上述代码中的Vector,由于变量vector只在createStrings()函数中使用,因此,它只是一个单纯的局部变量。局部变量是在线程栈上分配的,属于线程私有的数据,因此不可能被其他线程访问。所以,如果虚拟机检测到这种情况,就会将这些无用的锁操作去除掉。

object:待更新的对象
offset:待更新变量的offset偏移量
expectdValue:表示预期值,
newValue:表示新值


【注】由于针对incrementAndGet()方法,是先执行increment,然后再执行get,所以获取的是increment之后的值;而unsafe.getAndAddInt先返回get到的值,然后内部在执行addInt,所以在整体的方法这里需要"+1";

// 获得给定对象偏移量上的int值
public native int getInt(Object o, long offset);
// 设置给定对象偏移量上的int值
public native void putInt(Object o, long offset, int x);
// 获得字段在对象中的偏移量
public native long objectFieldOffset(Field f);
// 设置给定对象的int值,使用volatile语义
public native void putIntVolatile(Object o, long offset, int x);
// 获得给定对象的int值,使用volatile语义
public native int getIntVolatile(Object o, long offset);
// 和putIntVolatile()一样,但是它要求被操作字段就是volatile类型的
public native void putOrderedInt(Object o, long offset, int x);





