classTrainTicket{privateint number =50;Object objectLock =newObject();publicvoidsale(){synchronized(objectLock){if(number>0){System.out.println(Thread.currentThread().getName()+"\t"+"---卖出第: "+(number--));}}}}publicclassSaleTicketDemo{publicstaticvoidmain(String[] args){TrainTicket trainTicket =newTrainTicket();newThread(()->{for(int i =1; i <=55; i++) trainTicket.sale();},"t1").start();newThread(()->{for(int i =1; i <=55; i++) trainTicket.sale();},"t2").start();newThread(()->{for(int i =1; i <=55; i++) trainTicket.sale();},"t3").start();newThread(()->{for(int i =1; i <=55; i++) trainTicket.sale();},"t4").start();}}
public class SpinLock { AtomicReference<Thread> atomicReference = new AtomicReference<>(); public void myLock(){ System.out.println(Thread.currentThread().getName()+"----come in"); while(!atomicReference.compareAnd