天天看點

多線程相關面試問題

一、建立線程的幾種方式。

https://blog.csdn.net/weixin_42228950/article/details/90312024

二、線程同步的方法。

https://blog.csdn.net/scgyus/article/details/79499650

三、wait和sleep差別。

答: sleep()方法屬于Thread類,而wait()方法屬于Object類;

        sleep()方法會讓程式暫停執行制定的時間,讓出cpu給其他線程。但是它依然保持着監控狀态,當制定的時間到了之後又會自動恢複運作狀态;

       調用sleep()方法的過程中,線程不會釋放對象鎖。

       調用wait()方法時,線程會放棄對象鎖,進入等待此對象的等待鎖定池,隻有針對此對象調用notify()方法後此線程才會進入對象鎖定池準備,擷取對象鎖進入運作狀态;

四、Runnable接口和Callable接口的差別。

答:

1、Callable可以傳回一個類型V,而Runnable不可以;

2、Callable能夠抛出checked exception,而Runnable不可以;

3、Runnable是自從java1.1就有了,而Callable是1.5之後才加上去的;

4、Callable和Runnable都可以應用于executors。而Thread類隻支援Runnable;

5、都是接口;

6、都可以編寫多線程程式;

7、都采用Thread.start()啟動線程;

五、如何實作線程安全。