一年一度的面試高峰期又來了,技術學習群的很多朋友問我有沒有關於JVM基礎面試題,網上各種面試題沒有分類很混亂,無法系統性參考學習。 於是,我就把之前整理的以及我面試過的真題和答案都整理了一份分享給大家。共計108道面試題! 持續根據技術群反饋不端更新,將涵蓋內容包括: Java設計模式、Spring ...
轉自:
http://www.java265.com/JavaMianJing/202204/16506887823048.html
下文筆者講述synchronized和Lock的區別,如下所示
synchronized和Lock的區別: 語義不同 synchronized是java內置關鍵字 Lock是java中的一個類 可操作性不同 synchronized無法檢測是否獲取鎖狀態 Lock可判斷是否獲取鎖 操作方式不同 synchronized自動釋放鎖 Lock需程式員手動釋放鎖 等待鎖的方式不同 用synchronized關鍵字的兩個線程1和線程2 當前線程1獲得鎖,線程2線程等待 如果線程1阻塞,線程2則會一直等待下去 用Lock鎖就不一定會等待下去,如果嘗試獲取不到鎖,線程可以不用一直等待就結束了; 鎖的可操作性不同 synchronized的鎖可重入、不可中斷、非公平 Lock鎖可重入、可判斷、可公平(兩者皆可) 應用場景不同 synchronized適用鎖少量代碼 Lock適用大量代碼塊的鎖