我们先来说一个案列,请你用20个线程有序的打印一直变量count从1递增到1000。
其实有很多种实现的方法,例如使用synchronized关键字,具体代码如下:
public class Atomic {
public static void main(String[] args) {
TestThread testThread = new TestThread();
for (int i = 0; i < 20; i++) {
new Thread(testThread).start();
}
}
}
class TestThread implements Runnable {
private int count = 0;
@Override
public void run() {
while (count < 1001) {
synchronized (this) {
//防止最后超过一个线程再次等候,使count超出1000
if (count < 1001) {
System.out.println(count++);
}
}
}
}
}
但是在大多是实际业务场景中,这样做会使效率较低,太多线程处于等待状态,于是就来了乐观锁实现方式。
在这之前,我们先来认识一下jdk中Unsafe类,它是sun.misc包下的一个类,里面大都是native方法,直接调用c++底层函数,里面有几个方法需要说一下
public native lo