Java面試11-15

來源:互聯網
上載者:User

標籤:string   部署   二進位   indent   定義類   java面試   加密   重寫   etc   

 

11、類載入過程,如何獲得當前對象的ClassLoader

類載入的過程分為:載入、串連、初始化、使用和卸載。其中串連又可以分為:驗證、準備和解析

擷取當前對象的ClassLoader通過如下代碼:

this.getClass().getClassLoader()  // 擷取當前對象的類對象,然後調用getClassLoader

類載入器可以進行類層次的劃分、OSGi、熱部署和代碼加密等。那麼使用者如何自訂類載入器呢?

要建立使用者自己的類載入器,只需要擴充java.lang.ClassLoader類,然後覆蓋它的findClass(String name)方法即可,該方法根據參數指定類的名字,返回對應的Class對象的引用。

findClass protected Class<?> findClass(String name)   throws ClassNotFoundException

使用指定的二進位名稱尋找類。此方法應該被類載入器的實現重寫,該實現按照委託模型來載入類。在通過父類載入器檢查所請求的類後,此方法將被 loadClass 方法調用。預設實現拋出一個 ClassNotFoundException。

 

 

12、關於ConcurrentHashMap相關的問題

(1)ConcurrentHashMap的鎖分段技術。

(2)ConcurrentHashMap的讀是否要加鎖,為什麼。

(3)ConcurrentHashMap的迭代器是強一致性的迭代器還是弱一致性的迭代器。

 

 

13、假如有Thread1、Thread2、Thread3、Thread4四條線程分別統計C、D、E、F四個盤的大小,所有線程都統計完畢交給Thread5線程去做匯總,應當如何??

把相互獨立的計算任務包含在一個工作單元內,無需為每個單元啟動新的線程。這樣處理多線程代碼通常效率更高。因為不用去為每個計算單元單獨啟動Thread線程。執行代碼的線程是重用的。

(1)任務

Callable代表了一段可以調用並返回結果的代碼

Future介面用來表示非同步任務,是還沒有完成的任務給出的未來結果。主要方法有get()、cancel()和isDone()

FutureTask是Future介面的常用實作類別

(2)執行者 通過Executors類的Factory 方法擷取眾多執行者之一

 

Java面試11-15

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.