更新時間:2020年09月29日10時37分 來源:傳智播客 瀏覽次數(shù):
(1)問題分析:
面試官考核的是線程創(chuàng)建方式及其優(yōu)缺點
(2)核心答案講解:
1)繼承Thread類
2)實現(xiàn)Runnable接口
3)實現(xiàn)Callable接口
4)線程池方式
優(yōu)缺點:
1)繼承Thread類
優(yōu)點:代碼簡單 。 缺點:該類無法集成別的類。
2)實現(xiàn)Runnable接口
優(yōu)點:繼承其他類。 同一實現(xiàn)該接口的實例可以共享資源。
缺點:代碼復(fù)雜
3)實現(xiàn)Callable
優(yōu)點:可以獲得異步任務(wù)的返回值
4)線程池:實現(xiàn)自動化裝配,易于管理,循環(huán)利用資源。
(3)問題擴(kuò)展:
在Java中Lock接口比synchronized塊的優(yōu)勢是什么?你需要實現(xiàn)一個高效的緩存,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實現(xiàn)它?
整體上來說Lock是synchronized的擴(kuò)展版,Lock提供了無條件的、可輪詢的(tryLock方法)、定時的(tryLock帶參方法)、可中斷的(lockInterruptibly)、可多條件隊列的(newCondition方法)鎖操作。另外Lock的實現(xiàn)類基本都支持非公平鎖(默認(rèn))和公平鎖,synchronized只支持非公平鎖,當(dāng)然,在大部分情況下,非公平鎖是高效的選擇。
(4)結(jié)合項目中使用:
用戶登錄成功之后需要記錄用戶連續(xù)登錄天數(shù),給用戶獎勵積分??梢詣?chuàng)建一個線程,單獨調(diào)用積分接口。
猜你喜歡: