var.compareAndSet()方法是一个原子操作
public int incrementAndGet(AtomicInteger var) { int prev, next; do { prev = var.get(); // 局部变量每个线程内部持有一个 next = prev + 1; // 局部变量每个线程内部持有一个 } while ( ! var.compareAndSet(prev, next)); // 方法间接访问共享变量,如果没有被其他线程修改完成while(false)跳出循环 return next;如果被其他线程修改完成while(ture)继续执行循环 return next; }
Sign in to make a reply
0