本文共 2070 字,大约阅读时间需要 6 分钟。
ReentrantLock ? Java ?????????????????????????????????????????????????????????? AbstractQueuedSynchronizer (AQS) ?????CAS??????????????????
ReentrantLock ??? Lock ?????? lock() ? unlock() ?????? newCondition() ????????????????????????????????????????????
ReentrantLock ????????Sync?NonfairSync ? FairSync????NonfairSync ? FairSync ??? Sync?Sync ???? AbstractQueuedSynchronizer?
Sync ?? ReentrantLock ???????????????????????? nonfairTryAcquire()?tryRelease() ??
NonfairSync ????????????????????? lock() ???? CAS ???????????????????????
FairSync ?????????? lock() ???? acquire(1) ????????????????????????????????????????????????
public class TestReentrantLock { private static Lock lock = new ReentrantLock(); public static void main(String[] args) { MyThread t1 = new MyThread("t1", lock); MyThread t2 = new MyThread("t2", lock); MyThread t3 = new MyThread("t3", lock); t1.start(); t2.start(); t3.start(); } static class MyThread extends Thread { private Lock lock; MyThread(String name, Lock lock) { super(name); this.lock = lock; } public void run() { lock.lock(); try { System.out.println(Thread.currentThread().getName() + " running"); Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } finally { lock.unlock(); } } }} ????????????????????????????????????
?????????????? ReentrantLock ?????????????????????
转载地址:http://qbtx.baihongyu.com/