我在他們的網站上找不到答案。 你知道HtmlCleaner是否線程安全?
我有多個線程需要使用它,但我不知道是否可以安全地重用HtmlCleaner對象的實例。
你有沒有使用它?任何想法?HtmlCleaner線程安全嗎?
2
A
回答
1
查看源代碼,no - HtmlCleaner對象不是線程安全的。每個線程使用一個對象。
-1
我的經驗是否定的。我已經爲幾個應用程序使用HTMLCleaner,這些應用程序可以定期分析數十萬個URL的批次,或者根據需要間歇性地解析。
我發現解析異常和使用單個HtmlCleaner和DomSerializer在多線程加載時拋出的異常。
我希望儘可能重用對象,但它確實需要更多的代碼才能在線程生命中重用,但如果您關心速度和/或資源使用情況,我認爲我們都這樣做,那麼對象重用就很有意義。
如果您的工作線程始終處於活動狀態,負載不足且沒有太多,則在沒有池的線程級別重用可能對您有意義。
如果您不斷創建線程(我不建議這樣做),那麼您的線程並不總是處於加載狀態,線程數很多,或者可重用對象在實例化時間或運行資源消耗。
基本上,池方法可以讓應用程序擴大可重用對象的數量,確保您只有系統需要的對象數量在任何時間點都足夠,處理資源釋放,並且如果最小尺寸是設置,那麼你可以避免任何與創建對象相關的啓動滯後...到一個點。
無論如何,我傾向於大規模工作,所以這種類型的優化可能不值得你花時間。我的理論是在懷疑使用游泳池的時候。
3
僅供參考,其最新版本聲稱是:
http://htmlcleaner.sourceforge.net/javause.php#example2
final CleanerProperties props = new CleanerProperties();
final HtmlCleaner htmlCleaner = new HtmlCleaner(props);
final SimpleHtmlSerializer htmlSerializer =
new SimpleHtmlSerializer(props);
// make 10 threads using the same cleaner and the same serializer
for (int i = 1; i <= 10; i++) {
final String url = "http://search.eim.ebay.eu/Art/2-1/?en=100&ep=" + i;
final String fileName = "c:/temp/ebay_art" + i + ".xml";
new Thread(new Runnable() {
public void run() {
try {
TagNode tagNode = htmlCleaner.clean(new URL(url));
htmlSerializer.writeToFile(tagNode, fileName, "utf-8");
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
4
現在HTMLCleaner是線程安全的,
相關問題
- 1. Enum.TryParse - 線程安全嗎?
- 2. 在Python線程安全嗎?
- 3. 是DatagramSocket.send線程安全嗎?
- 4. XCGLogger線程安全嗎?
- 5. jCaptcha線程安全嗎?
- 6. 列表線程安全嗎?
- 7. 這些線程安全嗎?
- 8. ValueExpression線程安全嗎?
- 9. SecureRandom線程安全嗎?
- 10. KeyPairGenerator.generateKeyPair()線程安全嗎?
- 11. 是TcpClient.Available線程安全嗎?
- 12. Swift Calendar線程安全嗎?
- 13. 此線程安全嗎?
- 14. 線程安全(是嗎?)
- 15. RegSetValueEx線程安全嗎?
- 16. SecurityContextHolder線程安全嗎?
- 17. PCRE pcre_exec線程安全嗎?
- 18. SoapHttpClientProtocol線程安全嗎?
- 19. python logger線程安全嗎?
- 20. SynchronizationContext.Post()線程安全嗎?
- 21. Interop.Domino dll線程安全嗎?
- 22. udev線程安全嗎?
- 23. JMS QueueSender線程安全嗎?
- 24. NSSortDescriptor線程安全嗎?
- 25. github3py線程安全嗎?
- 26. NSKeyedArchiver線程安全嗎?
- 27. MSMQ線程安全嗎?
- 28. org.exolab.castor.xml.schema.Schema線程安全嗎?
- 29. Keras線程安全嗎?
- 30. Guava Table線程安全嗎?
編寫線程安全類是一個艱苦的工作。我總是認爲類不是線程安全的,而作者沒有在文檔中聲明明確性。這個項目有一個論壇,我想你會在那裏得到一個更好的答案,可能來自開發者,那裏。 – PeterMmm 2009-07-26 12:25:34