天天看點

多線程常見的面試題

多線程常見的面試題如下:

=============================================================================
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/chenmingjun

Copyright ©2018 黑澤明軍

【轉載文章務必保留出處和署名,謝謝!】

繼續閱讀