一個工作了3年的粉絲,去一個互聯網公司面試,結果被面試官懟了。 面試官說:”這麼簡單的問題你都不知道? 沒法聊了,回去等通知吧“。 這個問題是: ”什麼是可重入鎖,以及它的作用是什麼?“ 對於這個問題,來看看普通人和高手的回答吧 普通人: 嗯。。。。。。。。。。。。。。。。。。 高手: 好的。 可重 ...
一個工作了3年的粉絲,去一個互聯網公司面試,結果被面試官懟了。
面試官說:”這麼簡單的問題你都不知道? 沒法聊了,回去等通知吧“。
這個問題是: ”什麼是可重入鎖,以及它的作用是什麼?“
對於這個問題,來看看普通人和高手的回答吧
普通人:
嗯。。。。。。。。。。。。。。。。。。
高手:
好的。
可重入是多線程併發編程裡面一個比較重要的概念,
簡單來說,就是在運行的某個函數或者代碼,因為搶占資源或者中斷等原因導致函數或者代碼的運行中斷,
等待中斷程式執行結束後,重新進入到這個函數或者代碼中運行,並且運行結果不會受到影響,那麼這個函數或者代碼就是可重入的。
而可重入鎖,簡單來說就是一個線程如果搶占到了互斥鎖資源,在鎖釋放之前再去競爭同一把鎖的時候,不需要等待,只需要記錄重入次數。
在多線程併發編程裡面,絕大部分鎖都是可重入的,比如Synchronized、ReentrantLock等,但是也有不支持重入的鎖,比如JDK8裡面提供的讀寫鎖StampedLock。
鎖的可重入性,主要解決的問題是避免線程死鎖的問題。
因為一個已經獲得同步鎖X的線程,在釋放鎖X之前再去競爭鎖X的時候,相當於會出現自己要等待自己釋放鎖,這很顯然是無法成立的。
以上就是我對這個問題的理解。
總結
關於這個問題,其實是考察求職者的基礎知識。
互聯網大廠對基礎的考察會特別深,有必要的話還是需要在工作之外去多花一點時間研究。
並且,對於3年工作經驗,考察這類問題也不算過分。
如果有任何面試問題、職業發展問題、學習問題,都可以私信我。
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自
Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!