2010-08-09 19 views
25
  1. Tôi muốn biết đó đối tượng có thể được tái sử dụng (trong cùng một tài liệu hoặc khác nhau) khi sử dụng Java API cho việc xử lý XML, JAXP:Java và XML (JAXP) - Điều gì về bộ nhớ đệm và an toàn luồng?

    • DocumentBuilderFactory
    • DocumentBuilder
    • XPath
    • Node
    • ErrorHandler (EDIT: Tôi quên rằng điều này phải được thực hiện trong mã của riêng tôi, xin lỗi)
  2. Có nên bộ nhớ cache các đối tượng hoặc làm việc triển khai JAXP đã nhớ cache họ?

  3. (tái) sử dụng của các đối tượng thread-safe?

Trả lời

27

Tái sử dụng

Trong cùng một sợi các đối tượng có thể và nên được tái sử dụng. Ví dụ, bạn có thể sử dụng DocumentBuilder để phân tích cú pháp nhiều tài liệu.

Chủ đề An toàn

DocumentBuilderFactory sử dụng để explicity nêu nó không được chủ đề an toàn, tôi tin rằng điều này vẫn còn đúng:

An thực hiện các lớp DocumentBuilderFactory là KHÔNG đảm bảo được thread an toàn. Đó là số cho ứng dụng của người dùng để đảm bảo về việc sử dụng DocumentBuilderFactory từ hơn một chuỗi.

Từ Stack Overflow, DocumentBuilder không xuất hiện để được đề an toàn trong hai. Tuy nhiên trong Java SE 5 một phương pháp thiết lập lại được bổ sung để cho phép bạn sử dụng lại DocumentBuilders:

XPath không phải là thread an toàn, từ Javadoc

Một đối tượng XPath không phải là thread-safe và không lõm. Nói cách khác, nó là trách nhiệm của ứng dụng để chắc chắn rằng một đối tượng XPath không phải là sử dụng từ hơn một thread tại bất kỳ thời gian nhất định, và trong khi đánh giá phương pháp được gọi, ứng dụng có thể không đệ quy gọi đánh giá phương pháp.

Node không phải là thread an toàn, từ trang web Xerces

là thực hiện Xerces DOM thread-an toàn không? Số DOM không yêu cầu triển khai phải là chủ đề an toàn. Nếu bạn cần truy cập DOM từ nhiều chủ đề, bạn cần để thêm khóa thích hợp vào mã ứng dụng của mình.

ErrorHandler là một giao diện, vì vậy nó tùy thuộc vào thực hiện lại giao diện để đảm bảo thread-an toàn. Đối với gợi ý về thread-an toàn mà bạn có thể bắt đầu ở đây:

+0

gì về bộ nhớ đệm/tái sử dụng/thread-an toàn của các đối tượng Node? – MRalwasser

+0

Các nút DOM không được đảm bảo an toàn chỉ. –

+0

Địa chỉ này được chỉ định ở đâu? – MRalwasser

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