javax.xml.XPathFactory.newInstance() iş parçacığı güvenli midir?Java XPathFactory iş güvenliği
Bunu soruyorum çünkü bunun için belirsiz olan belgeleri buluyorum. The JDK 5 docs, iplik güvenliğini hiç bahsetmez;
XPathFactory sınıf evresel değildir: JDK 6 onlar takip yazdı. Diğer bir deyişle, herhangi bir anda en fazla bir iş parçacığının bir XPathFactory nesnesi kullanarak olduğundan emin olmak uygulamasının sorumluluğundadır. Uygulamaları, bozuk istemcilerden kendilerini korumak için senkronize olarak yöntemleri işaretlemek için teşvik edilen vardır.
Anladığım kadarıyla, bu XPathFactory
için tekil uygulaması olması güvenli değil, ama böyle yaparak şey güvenli olmalıdır:
XPath xPathEvaluator = XPathFactory.newInstance().newXPath();
Ben bir şey eksik? Bu, onu genişleten gerçek sınıfa bağlı mı? Yukarıdaki ifadeyi içeren synchronize
yöntemine ihtiyacım var mı?
Teşekkürler, aynısını düşünüyordum ama yeniden güvence istedim :). –
Her zaman el ele tutuşur :-) – Thilo
JAXP-XPath tasarımı hakkında birçok kötü şey var. Bunlardan biri XPathFactory.newInstance() çok pahalı; Bir diğeri, her iş parçasında tekrar tekrar çağırmanız bekleniyor. Bir diğeri, bir XPath 1.0 motorunu veya bir XPath 2.0 motorunu geri alıp almayacağınızı bilmenin bir yolu yoktur. Bu mekanizmayı gerçekten kullanmak isteyip istemediğinizi kendinize sorun: XPath motorunun ne istediğini biliyorsanız, yüklemek için daha iyi yollar vardır. –