第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請求澄清多線程環(huán)境中 TransformerFactory 的 XSLT Transformer

請求澄清多線程環(huán)境中 TransformerFactory 的 XSLT Transformer

SMILET 2023-08-23 14:57:56
Transformer文檔(https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/TransformerFactory.html#newTransformer-javax.xml.transform.Source-)說必須注意不要在同時運行的多個線程中使用此 Transformer。當(dāng)我在多線程環(huán)境中使用同一個 Transformer 對象時,會發(fā)生什么?為什么我們不能在 2 個線程中使用同一個 Transformer 對象?如果我的 XSLT 源是固定的,我是否可以緩存 Transformer 對象,以便我的所有請求都將使用相同的 Transformer,而不是在每個請求上重新創(chuàng)建它?
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經(jīng)驗 獲得超11個贊

像 Transformer 這樣的 JAXP 類是接口,并且它們有多種實現(xiàn)(目前使用最廣泛的兩個是 Xalan 和 Saxon)。打破多線程規(guī)則的實際效果將取決于您使用的處理器;但在這兩種情況下,它們都是相當(dāng)不可預(yù)測的。Transformer 可能保存變量和動態(tài)執(zhí)行上下文的當(dāng)前狀態(tài),因此您確實不希望兩個轉(zhuǎn)換重寫彼此的變量。

為了避免每次使用時重新編譯樣式表的成本,您需要緩存 Templates 對象,而不是 Transformer 對象。理論上,您可以連續(xù)重用 Transformer 在單個線程中連續(xù)執(zhí)行多個轉(zhuǎn)換,但這沒有意義:只需為每個新轉(zhuǎn)換創(chuàng)建一個新的 Transformer(從緩存的模板)。

另一件需要注意的事情是 DOM 不是線程安全的,即使在只讀模式下也是如此。不允許兩個轉(zhuǎn)換同時訪問同一棵 DOM 樹。如果您確實需要在多個轉(zhuǎn)換之間共享源文檔,那么最好的方法最終取決于您使用的是 Xalan 還是 Saxon。


查看完整回答
反對 回復(fù) 2023-08-23
?
牧羊人nacy

TA貢獻1862條經(jīng)驗 獲得超7個贊

要編譯和緩存固定代碼,請使用newTemplates創(chuàng)建Templates對象,https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/TransformerFactory.html#newTemplates-javax.xml.transform.Source -,然后為多線程環(huán)境中的每次執(zhí)行使用newTransformerTemplates對象創(chuàng)建一個新的Transformer.

查看完整回答
反對 回復(fù) 2023-08-23
  • 2 回答
  • 0 關(guān)注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號