天天看點

Java随記

Java中對null進行強制類型轉換,會不會報錯?

如果是将null強制轉換為一個對象,因為對象本身可以是null,是以不會抛出異常;

如果是将null轉換為基本類型,内部會調用xxxValue()方法給基本類型指派,是以會報錯。

實作多線程的方式?差別?

實作多線程的兩種方式,繼承Thread類和實作Runnable接口;

繼承Thread類的局限性在于Java不支援多繼承,繼承Thread類之後就不可以繼承其他類;

實作Runnable接口的方式可以一邊實作一邊繼承;

Thread類本身也是實作了Runnable接口;

Thread類和Runnable接口之間具有多态關系。

啟動線程時,調用start()方法和調用run()方法的差別?

調用start()方法,通知“線程規劃器”此線程已經準備就緒,等待調用線程對象的run()方法,就是讓系統安排一個時間來調用Thread中的run()方法,具有異步執行的效果;

調用run()方法,就是普通的調用類中的方法,不用交給“線程規劃器”來處理,是同步執行的,即必須等run()方法執行完成才可以執行後面的代碼。