在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 為什么需要線程上下文類加載器來完成SPI調(diào)用外部實(shí)現(xiàn)?

為什么需要線程上下文類加載器來完成SPI調(diào)用外部實(shí)現(xiàn)?

SPI通過線程上下文類加載器,是怎么實(shí)現(xiàn)破壞雙親委派模型的?一個(gè)類加載器加載的類不能訪問另一個(gè)類加載器加載的類么?如果一個(gè)類加載器可以訪問另一個(gè)類加載器的類的話,就應(yīng)該不需要線程上下文類加載器的機(jī)制吧?
為什么需要線程上下文類加載器實(shí)現(xiàn)調(diào)用外部實(shí)現(xiàn)類的方法?不能直接調(diào)用么?如果不用線程上下文類加載器加載,直接被應(yīng)用程序類加載器加載,然后直接new()一個(gè)實(shí)現(xiàn)類,實(shí)現(xiàn)調(diào)用不可以么?

另外,如果非得用線程上下文類加載器實(shí)現(xiàn)這樣的調(diào)用外部實(shí)現(xiàn)的方式的話,那為什么線程上下文類加載器就可以實(shí)現(xiàn)這種調(diào)用?原理是什么?

stackOverflow上:
The thread context classloader is the current classloader for the current thread. An object can be created from a class in ClassLoaderC and then passed to a thread owned by ClassLoaderD. In this case the object needs to use Thread.currentThread().getContextClassLoader() directly if it wants to load resources that are not available on its own classloader.

這段話的具體含義是什么?

SPI實(shí)現(xiàn)的Java類一般是由應(yīng)用程序類加載器(Application ClassLoader)來加載的。啟動(dòng)類無法找到SPI的實(shí)現(xiàn)類,因?yàn)樗患虞d核心庫(SPI的實(shí)現(xiàn)類由第三方提供)。它(這里的它指的是?)也不能代理給應(yīng)用程序類加載器,因?yàn)樗ㄟ@里的它指的是?)又是應(yīng)用程序類加載器的父類(什么意思?應(yīng)用程序類加載器的父類是什么?),雙親委派模型又會(huì)將它交給啟動(dòng)類來加載。所以在這個(gè)時(shí)候我們就要“打破”這個(gè)“雙親委派模型”。

回答
編輯回答
扯不斷

話說你的spi指的是什么?全稱或中文名是?

2018年1月2日 11:21