java 自旋锁_java锁的种类以及辨析(一):自旋锁
public class SpinLock {
private volatile int lock = 0;
private static Unsafe theUnsafe;
private static long lockOff;
static {
try {
Field theUnsafeField = Unsafe.class.getDeclaredField(“theUnsafe”);
theUnsafeField.setAccessible(true);
theUnsafe = (Unsafe) theUnsafeField.get(null);
Field lockField = SpinLock.class.getDeclaredField(“l(fā)ock”);
lockOff = theUnsafe.objectFieldOffset(lockField);
} catch (Exception e) {
e.printStackTrace();
}
}
public void lock() {
while (! theUnsafe.compareAndSwapInt(this, lockOff, 0, 1)){
}
}
public void unlock() {
theUnsafe.compareAndSwapInt(this, lockOff, 1, 0);
}
}
我也寫(xiě)了個(gè)自旋鎖,
總結(jié)
以上是生活随笔為你收集整理的java 自旋锁_java锁的种类以及辨析(一):自旋锁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: qlikview连接mysql_Qlik
- 下一篇: java new 多线程_Java多线程