package cn.demo.atomicBoolean; import com.sun.org.apache.regexp.internal.RE; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; /** * 高并发cas应用dome,快速失败 * @author liuxianwen * @version 1.0 * @date 2022/2/24 20:12 */ public class TestAtomicBoolean implements Runnable{ private static volatile String str="333=="; private static AtomicBoolean exists = new AtomicBoolean(false); private String name; public TestAtomicBoolean(String name) { this.name = name; } public TestAtomicBoolean(){} @Override public void run() { //同一时刻可以多个线程进来,但是只要一个线程抢到资源,其他线程都失败 if (exists.compareAndSet(false, true)) { System.out.println(Thread.currentThread().getName()+" "+name + " enter"); try { System.out.println(name + " working"); str="9999999"; TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { // do nothing } System.out.println(name + " leave"); exists.set(false); }else{ // 其他线程都失败 System.out.println(Thread.currentThread().getName() + " not get resouce "); } } public static void main(String[] args) { //启用10个线程 for(int i=0;i<10;i++){ new Thread(new TestAtomicBoolean("66")).start(); System.out.println(str); } } }
多线程应用CAS,快速失败
最新推荐文章于 2022-09-24 14:16:33 发布