AQS框架實現類學習

2021-07-24 07:25:21 字數 1272 閱讀 6177

/**

* * @author jinxindong 2023年11月1日 上午9:33:46

* @version v1.0

*/public class countdownlatchdemo

static class worker extends thread

public void run() catch (interruptedexception e) finally

}

}}

semaphore:同事允許幾個執行緒併發操作共享資源  方法: acquire() 和release()

/**

* * @author jinxindong 2023年10月31日 下午4:42:07

* @version v1.0

*///建立乙個會實現print queue的類名為printqueue

public class printqueue

//實現列印功能 模擬列印文件

public void printjob(object document) catch (exception e) finally

} }

/**

* * @author jinxindong 2023年11月1日 上午10:29:45

* @version v1.0

*/public class exchangertest catch (exception e)

}});

//執行執行緒b

executorservice.execute(new runnable() catch (interruptedexception e)

}});

executorservice.shutdown(); }

}

phaser:

可以代替countdownlatch和cyclicbarrier

1  phaser pha = new phaser(2);//countdownlatch(2)

pha.arrive() // latch.countdown() 減1

pha.awaitadvance // latch.await()

2   phaser pha = new phaser(2);

pha.arriveandawaitadvance() // cyc.await()

AQS框架 談談對AQS框架的理解

aqs是乙個框架,基於它我們可以實現鎖和同步器,j.u.c.包中和很多鎖和同步器都是基於aqs實現的。使用aqs的方式通常不是讓鎖或同步器直接繼承aqs類,而是將aqs的子類作為鎖或同步器類的乙個輔助內部類,鎖或同步器的方法呼叫aqs子類物件的方法完成同步操作。來自網路 aqs中最重要的乙個字段就是...

AQS框架基本流程

我們先來看一下這個併發框架的原理,在之後的文章中我們將乙個乙個的分析那些有用的實現。public final void acquire int arg 這個方法是獲取到資源的入口,首先他會嘗試來獲取arg個資源,如果沒有獲取成功,就會呼叫後面的方法將這次請求放到乙個同步佇列裡面,如果都失敗了,就會呼...

ReentrantLock 以及 AQS 實現原理

reentrantlock是可重入鎖,什麼是可重入鎖呢?可重入鎖就是當前持有該鎖的執行緒能夠多次獲取該鎖,無需等待。可重入鎖是如何實現的呢?這要從reentrantlock的乙個內部類sync的父類說起,sync的父類是abstractqueuedsynchronizer 後面簡稱aqs aqs是j...