什么是自旋?

当一个线程进入时候不断的尝试把0变成1,成功的话就走代码块,不成功就一直循环去尝试将0置成1,CAS操作
但是上面的操作过分消耗资源,执行多少秒其他线程就抢多少秒
就出现了yield自旋

但是这样也没有解决问题,yeiId只是让当前线程让出,但是如果有2000个线程在抢夺资源,那该怎么办?

用sleep来解决问题,但是sleep也不一定能解决这个问题,因为sleep到底睡眠多少秒连调用者都不清楚,那就只能使用park来解决这个问题

伪代码流程,当获取锁失败就将当前线程加入到对列中,当CPU缓解后从对列里取出线程继续执行

在ReentrantLock里也是这个流程,尝试把状态转换