Unsafe里putInt(),putIntVolatile()和putOrderedInt()有什么区别?
void sun::misc::Unsafe::putInt (jobject obj, jlong offset, jint value)
{
jint *addr = (jint *) ((char *) obj + offset);
*addr = value;
}
。。。。这个是普通的设置int,值未必立刻回写到主存
void sun::misc::Unsafe::putIntVolatile (jobject obj, jlong offset, jint value)
{
write_barrier ();
volatile jint *addr = (jint *) ((char *) obj + offset);
*addr = value;
}
。。。。这个是支持Volatile的设置int,值立刻回写到主存
void sun::misc::Unsafe::putOrderedInt (jobject obj, jlong offset, jint value)
{
volatile jint *addr = (jint *) ((char *) obj + offset);
*addr = value;
}
。。。。那这个是什么意思?ordered?顺序设置,意思是线程安全的嘛?