国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

面試:Semaphore(信號量)的成長之路

Lorry_Lu / 2390人閱讀

摘要:最寒冷,面試跳槽不能等馬上就月份了,所謂的金三銀四招聘季。在中有兩種模式,分別是線程池和信號量,說到這里大家明白了吧,信號量的作用。感興趣的同學(xué)可以去了解下,講了線程,線程池,鎖,,等內(nèi)容。

2019最寒冷,面試跳槽不能等

馬上就3月份了,所謂的金三銀四招聘季。2019年也許是互聯(lián)網(wǎng)最冷清的一年,很多知名的大型互聯(lián)網(wǎng)公司都裁員過冬。當然也有一些公司還在持續(xù)招人的,比如阿里就宣稱不裁員,反而要增加更多的就業(yè)機會。

面試大公司的職位,基礎(chǔ)顯得很重要,在并發(fā)編程這塊問的自然也比較多。對于一個Java程序員而言,能否熟練掌握并發(fā)編程是判斷他優(yōu)秀與否的重要標準之一。因為并發(fā)編程是Java語言中最為晦澀的知識點,它涉及操作系統(tǒng)、內(nèi)存、CPU、編程語言等多方面的基礎(chǔ)能力,更為考驗一個程序員的內(nèi)功。

今天我們就來聊聊Java中的Semaphore(信號量)在面試過程中會有哪些問題,以及如何回答。

問題一:什么是信號量?

信號量就相當于一個計數(shù)器,通常用來限制線程的數(shù)量。每個線程操作前會先獲取一個許可證,邏輯處理完成之后就歸還這個許可證。

就好比我們?nèi)ゾW(wǎng)吧上網(wǎng),信號量初始化的大小就好比網(wǎng)吧中所有的電腦。當有人交費開機之后,可用電腦的數(shù)量就少了1臺。依次類推,當有人下機之后可用的電腦數(shù)量又多了。當機器被用完之后新來的客人就只能等待前面的人下機,這就是歸還許可證。

問題二:信號量的應(yīng)用場景?

信號量的核心功能就是用來對資源做一定的限制,防止出現(xiàn)崩塌現(xiàn)象。最適用的應(yīng)用場景那就是限流,通過限流來保護對應(yīng)的資源。

在Spring Cloud中我們會用Hystrix來保護服務(wù),進行熔斷降級。在Hystrix中有兩種模式,分別是線程池和信號量,說到這里大家明白了吧,信號量的作用。

在限流層面,最簡單的實現(xiàn)可以用信號量來實現(xiàn)本地限流操作,集群限流必須得依賴第三方中間件,比如Redis。

問題三:你有在項目中使用過信號量嗎?

這個問題那就得根據(jù)你的實際情況來說明了,如果確實沒用用過,你可以稍微構(gòu)思一下,在哪些業(yè)務(wù)場景下可以使用,然后封裝下,對吧,搞Java的怎么能不會封裝呢,然后侃侃而談,我用過啊,我在那個啥....用過啊....為了滿足xxx的需求啊。。。

比如:在我們的爬蟲系統(tǒng)中,都會通過多線程的方式去爬取數(shù)據(jù),而有些小型網(wǎng)站,并發(fā)能力不是特別強,線程數(shù)一上去就很慢,然后服務(wù)出現(xiàn)504,502最后爬取不了,這個時候就需要對并發(fā)抓取量做一些限制了,這個時候就可以用信號量來進行限制。

還有些并發(fā)量強的網(wǎng)站,能抗住很多的請求,但是人家的反爬取策略做的好啊,請求數(shù)量稍微多一點就能識別你是機器,給你封了,這也是需要做一些限制。

剩下的就靠你自己吹牛啦。。。

public class SemaphoreDemo {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        Semaphore semaphore = new Semaphore(2);
        for (;;) {
            executorService.execute(() -> {
                try {
                    semaphore.acquire();
                    System.out.println("抓取數(shù)據(jù)邏輯");
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    semaphore.release();
                }
             });
        }
    }
}
總結(jié)推薦

我這邊只是列舉了簡單的三個問題,實際面試中可能問的更深入,在并發(fā)這塊我也不是什么高手,我也是一直在學(xué)習(xí)的過程中,其實在2年之前吧,我自己也錄制過一套并發(fā)的課程,在我的網(wǎng)站猿天地上面。感興趣的同學(xué)可以去了解下,講了線程,線程池,鎖,CountDownLatch,Semaphore等內(nèi)容。

歡迎加入我的知識星球,一起交流技術(shù),免費學(xué)習(xí)猿天地的課程(http://cxytiandi.com/course)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73508.html

相關(guān)文章

  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實現(xiàn)故障恢復(fù)自動化詳解哨兵技術(shù)查漏補缺最易錯過的技術(shù)要點大掃盲意外宕機不難解決,但你真的懂數(shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實現(xiàn)故障恢復(fù)自動化詳解哨兵技術(shù)查漏補缺最易錯過的技術(shù)要點大掃盲意外宕機不難解決,但你真的懂數(shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    tommego 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<