多執行緒-多執行緒常見的面試題

ZHOU_VIP發表於2017-06-04
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:執行緒的生命週期圖
    新建 -- 就緒 -- 執行 -- 死亡
    新建 -- 就緒 -- 執行 -- 阻塞 -- 就緒 -- 執行 -- 死亡

    建議:畫圖解釋。

相關文章