2012-03-22 27 views
16

Các Java 1.4 doc cho javax.xml.parsers.DocumentBuilderFactory tiểu bang không có thái độ rõ ràng:Liệu DocumentBuilderFactory có an toàn trong Java 5+ không?

An thực hiện các lớp DocumentBuilderFactory không đảm bảo được đề an toàn. Tùy thuộc vào ứng dụng của người dùng để đảm bảo việc sử dụng DocumentBuilderFactory từ nhiều hơn một luồng. Ngoài ra, ứng dụng có thể có một phiên bản của DocumentBuilderFactory cho mỗi luồng. Một ứng dụng có thể sử dụng cùng một cá thể của nhà máy để có được một hoặc nhiều cá thể của DocumentBuilder cung cấp cá thể của nhà máy không được sử dụng trong nhiều hơn một luồng tại một thời điểm.

Tuy nhiên, tài liệu Java 5Java 6 không nói gì cả. Hiện tại, DocumentBuilderFactory có an toàn hay không, hay Sun chỉ quyết định cảnh báo là quá mức cần thiết và mọi người nên biết rõ hơn?

+0

có thể trùng lặp của chuỗi [Là DocumentBuilder.parse() an toàn không?] (Http://stackoverflow.com/questions/56737/is-documentbuilder-parse-thread-safe) –

+5

Không trùng lặp, câu hỏi đặt ra là liệu nó có an toàn cho nhiều chủ đề để * xây dựng * Nhà xây dựng tài liệu sử dụng cùng một nhà máy, không an toàn để thử phân tích cú pháp nhiều tài liệu với cùng một trình xây dựng. –

Trả lời

-5

Vì nó sẽ ở trong tình trạng cực kỳ kém để làm cho chủ đề an toàn mà không nói tiền của tôi là nó vẫn không an toàn. Bạn có thể tự mình kiểm tra bằng cách sử dụng điểm ngắt.

13

Việc triển khai lớp DocumentBuilderFactory KHÔNG được đảm bảo là luồng an toàn. Tùy thuộc vào ứng dụng của người dùng để đảm bảo việc sử dụng DocumentBuilderFactory từ nhiều hơn một luồng. Ngoài ra, ứng dụng có thể có một phiên bản của DocumentBuilderFactory cho mỗi luồng. Một ứng dụng có thể sử dụng cùng một cá thể của nhà máy để có được một hoặc nhiều cá thể của DocumentBuilder cung cấp cá thể của nhà máy không được sử dụng trong nhiều hơn một luồng tại một thời điểm.

Có phương thức đặt lại() trên DocumentBuilder để khôi phục lại trạng thái khi được tạo lần đầu tiên. Nếu bạn đang đi tuyến đường ThreadLocal, đừng quên gọi này hoặc bạn đang hosed.

Các vấn đề liên quan