多線程常見的面試題如下:
=============================================================================
1:多線程有幾種實作方案,分别是哪幾種?
兩種。
繼承Thread類
實作Runnable接口
擴充一種:實作Callable接口。這個需要和線程池結合。
-----------------------------------------------------------------------------
2:同步有幾種方式,分别是什麼?
兩種。
同步代碼塊
同步方法(靜态同步方法)
-----------------------------------------------------------------------------
3:啟動一個線程是run()還是start()?它們的差別?
start();
run():封裝了被線程執行的代碼,直接調用僅僅是普通方法的調用。
start():啟動線程,并由JVM自動調用run()方法。
-----------------------------------------------------------------------------
4:sleep()和wait()方法的差別?
sleep():必須指定時間,不釋放鎖。
wait():可以不指定時間,也可以指定時間,并立即釋放鎖。
-----------------------------------------------------------------------------
5:為什麼wait()、notify()、notifyAll()等方法都定義在Object類中?
因為這些方法的調用是依賴于鎖對象的,而同步代碼塊的鎖對象是任意對象。
而Object代碼任意的對象,是以,它們定義在這裡面。
-----------------------------------------------------------------------------
6:線程的生命周期。
建立-->就緒-->運作-->死亡
建立-->就緒-->運作-->阻塞-->就緒-->運作-->死亡
建議:畫圖解釋。
=============================================================================
我的GitHub位址:
https://github.com/heizemingjun我的部落格園位址:
http://www.cnblogs.com/chenmingjun我的螞蟻筆記部落格位址:
http://blog.leanote.com/chenmingjunCopyright ©2018 黑澤明軍
【轉載文章務必保留出處和署名,謝謝!】