/**
* * @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...