<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 線程上下文類加載器 線程上下文類加載器## TCC( Thread Context ClassLoader) 是從JDK1.2 引入的,類Thread 的`getContextClassLoader()`與`setContextClassLoader(Classloader var1)`分別用來設置線程的上下文類加載器。如果沒有指定線程的上下文的加載器,那么線程將會繼承父線程的上下文類加載器。Java 的初始化線程的上下文加載器,可以通過上下文類加載器加載類與資源 基本的獲取和使用方法: ``` public class ContextClassLoader { /** * 每個類都會使用自己的類加載器嘗試去加載所依賴的類 * * <p>如果ClassX 依賴了 ClassY ,那么在ClassX的加載器將會在主動引用ClassY 并且ClassY尚未被加載的時候加載ClassY 這個類 */ public static void main(String[] args) { System.out.println(Thread.currentThread().getContextClassLoader()); System.out.println(Thread.class.getClassLoader()); } } ``` ### TCC 的作用: 改變雙親委托模型 SPI的實現模式中加載器雙親委派模型存在一個缺陷,為解決問題JVM設計者做了一個不太優雅的的方式解決,就是線程上下文類的加載器,父ClassLoader可以使用 Thread.currentThread().getContextClassloader() 所指定的Classloader 加載類,這就改變了父ClassLoader不能使用子ClassLoader加載的類以及其他沒有父子關系的加載器加載類的訪問情況,即改變了雙親委托模型 ***** 【知識點】 * 當高層提供了統計的接口讓低層去實現,同時又要在高層加載(或者實例化)這個類,那么就必須通過線程上下文類加載器幫助高層ClassLoader 加載這個類 * 父加載器不能訪問使用子加載器加載的類,子加載器可以訪問使用父加載器加載的類 * 就SPI服務而言,有些接口是啟動類加載器加載,但具體的實現各個廠商有自己不同的實現方式,這些實現是不會被啟動類加載器加載的,這樣傳統的雙親委托機制就無法滿足 SPI 的要求。而通過設置當前線程的上下類加載器,就可以通過當前線程的上下文類加載器加載這些類。 > Java中所有涉及SPI的加載動作都采用這種方式, 實現方案包括: ?JDBC、JNDI、JCE以及JBI等
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看