java 多线程-CAS原子操作
CAS:比较并交换
借助已经实现的类AtomicInteger
内部原理:把当前的值和原来的值(序列号、地址等)作比较,如果相等则覆盖
public class my {//借助已经实现的类AtomicInteger //库存 private static AtomicInteger stock=new AtomicInteger(5); //假设库存有五件商品public static void main(String[]args) throws InterruptedException{ for(int i=0;i<5;i++) { new Thread(()->{ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Integer left=stock.decrementAndGet(); //相减和获取 //内部已实现CAS原子操作 if(left<1) { System.out.println("抢完了"); return; } System.out.println(Thread.currentThread().getName()+"抢了一件商品"); System.out.println("还剩下:"+left); }).start(); }}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。