zoukankan      html  css  js  c++  java
  • 自旋锁

    目的:手写自旋锁,要求只有一个线程能够获得锁,获得锁的线程未释放锁前,其余线程一直循环访问

    package com.motorye.day331_spinLock;
    
    import java.util.concurrent.atomic.AtomicReference;
    
    public class SpinLock {
    
        AtomicReference<Thread> atomicReference = new AtomicReference<>();
    
        public void mylock(){
            System.out.println(Thread.currentThread().getName()+"来了");
            Thread thread = Thread.currentThread();
            while (!atomicReference.compareAndSet(null, thread)){}
            System.out.println(Thread.currentThread().getName()+"成功获得锁");
        }
        public void unmylock(){
            System.out.println(Thread.currentThread().getName()+"准备走");
            Thread thread = Thread.currentThread();
            atomicReference.compareAndSet(thread, null);
            System.out.println(Thread.currentThread().getName()+"彻底释放锁");
        }
    
        public static void main(String[] args) {
            SpinLock spinLock = new SpinLock();
            new Thread(new Runnable() {
                         @Override
                         public void run() {
                             spinLock.mylock();
                             try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); }
                             spinLock.unmylock();
                         }
                     },"aaa").start();
    
            new Thread(new Runnable() {
                @Override
                public void run() {
                    spinLock.mylock();
                    spinLock.unmylock();
                }
            },"bbb").start();
        }
    }

  • 相关阅读:
    谈谈我对雾霾的看法
    2016年书单分享
    我的面试心得:面试官视角
    Cesium原理篇:GroundPrimitive
    Cesium原理篇:Batch
    Peter Hessler和他的中国三部曲(上)
    Cesium原理篇:Material
    全球PM25实时可视化
    Cesium原理篇:Property
    次郎的寿司梦
  • 原文地址:https://www.cnblogs.com/motorye/p/12603744.html
Copyright © 2011-2022 走看看