JDK里的自旋锁
自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时才能进入临界区。
JDK里面自旋锁的实现有 SynchronousQueue 和 LinkedTransferQueue。 本文只是自己对源码的简单理解。
先说公平锁,先等待的线程先获得数据。SynchronousQueue的内部类TransferQueue实现了公平锁。
某一时刻 线程A看到内存的情况如下: 链表,head 和 tail 分别指向链首和链尾,并且线程执行了ht = tail 。
阅读全文