Discuss / Java / 老师,这一节没看懂

老师,这一节没看懂

Topic source

深蓝738

#1 Created at ... [Delete] [Delete and Lock User]

如何不通过线程锁来实现线程安全的?我也看了Java源码,最后追到一个native方法。实在是看不懂原理呀。

 public final boolean compareAndSet(int expect, int update) {
	return unsafe.compareAndSwapInt(this, valueOffset, expect, update);
 }
public final native boolean compareAndSwapInt(Object paramObject, long paramLong, int paramInt1, int paramInt2);

叁木辛尧

#2 Created at ... [Delete] [Delete and Lock User]

我看书上说,是通过机器级指令(可能是汇编吧)来实现的操作的原子性。

sheamus94

#3 Created at ... [Delete] [Delete and Lock User]

AtomicInteger类compareAndSet通过原子操作实现了CAS操作,最底层基于汇编语言实现。

简单说一下原子操作的概念,“原子”代表最小的单位,所以原子操作可以看做最小的执行单位,该操作在执行完毕前不会被任何其他任务或事件打断。

CAS相比Synchronized,避免了锁的使用,总体性能比Synchronized高很多。


  • 1

Reply