1) 問題分析
面試官考核的是線程創建方式及優缺點
(2) 核心答案講解
1.繼承Thread類 2.實現Runnable接口
3.實現Callable接口 4.線程池方式
優缺點
1.繼承Thread類
優點 、代碼簡單 。 缺點 、該類無法集成別的類。
2.實現Runnable接口
優點 、繼承其他類。 同一實現該接口的實例可以共享資源。
缺點 、代碼復雜
3.實現Callable
優點 、可以獲得異步任務的返回值
4.線程池 、實現自動化裝配,易於管理,循環利用資源。
(3) 問題擴展
在Java中Lock接口比synchronized塊的優勢是什么?你需要實現一個高效的緩存,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實現它?
整體上來說Lock是synchronized的擴展版,Lock提供了無條件的、可輪詢的(tryLock方法)、定時的(tryLock帶參方法)、可中斷的(lockInterruptibly)、可多條件隊列的(newCondition方法)鎖操作。另外Lock的實現類基本都支持非公平鎖(默認)和公平鎖,synchronized只支持非公平鎖,當然,在大部分情況下,非公平鎖是高效的選擇。
(4) 結合項目中使用
用戶登錄成功之后需要記錄用戶連續登錄天數,給用戶獎勵積分。可以創建一個線程,單獨調用積分接口。