咪免直播高品质美女在线视频互动社区_咪免直播官方版_咪免直播直播视频在线观看免费版下载

您的位置:首頁 > 軟件教程 > 教程 > 自定義同步器的實現與Semaphore示例

自定義同步器的實現與Semaphore示例

來源:好特整理 | 時間:2024-04-11 08:49:00 | 閱讀:140 |  標簽: 一個 S 面試 美團   | 分享到:

寫在開頭 今天在牛客上看到了一個帖子,一個網友吐槽美團一面上來就讓手撕同步器,沒整出來,結果面試直接涼涼。 就此聯(lián)想到一周前寫的一篇關于AQS知識點解析的博文,當時也曾埋下伏筆說后面會根據AQS的原理實現一個自定義的同步器,那今天就來把這個坑給填上哈。 常用的AQS架構同步器類 自定義同步器實現步驟

今天在牛客上看到了一個帖子,一個網友吐槽美團一面上來就讓手撕同步器,沒整出來,結果面試直接涼涼。

就此聯(lián)想到一周前寫的一篇關于AQS知識點解析的博文,當時也曾埋下伏筆說后面會根據AQS的原理實現一個自定義的同步器,那今天就來把這個坑給填上哈。

常用的AQS架構同步器類

自定義同步器實現步驟

在上一篇文章中我們就已經提過了AQS是基于 模版方法模式 的,我們基于此的自定義同步器設計一般需要如下兩步:

1. 使用者繼承 AbstractQueuedSynchronizer 并重寫指定的方法;

2. 將 AQS 組合在自定義同步組件的實現中,并調用其模板方法,而這些模板方法會調用使用者重寫的方法。

在模板方法模式下,有個很重要的東西,那就是 “鉤子方法” ,這是一種抽象類中的方法,一般使用 protected 關鍵字修飾,可以給與默認實現,空方法居多,其內容邏輯由子類實現,為什么不使用抽象方法呢?因為,抽象方法需要子類全部實現,增加大量代碼冗余!

Ok,有了這層理論知識,我們去看看Java中根據AQS實現的同步工具類有哪些吧

Semaphore(信號量)

在前面我們講過的synchronized 和 ReentrantLock 都是一次只允許一個線程訪問某個資源,而Semaphore(信號量)可以用來控制同時訪問特定資源的線程數量,它并不能保證線程安全。

小編推薦閱讀

好特網發(fā)布此文僅為傳遞信息,不代表好特網認同期限觀點或證實其描述。

相關視頻攻略

更多

掃二維碼進入好特網手機版本!

掃二維碼進入好特網微信公眾號!

本站所有軟件,都由網友上傳,如有侵犯你的版權,請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網安備:43070202000427號© 2013~2025 haote.com 好特網