Như tôi đã hiểu, lớp ngoại lệ của Java chắc chắn không phải là không thay đổi (các phương pháp như initCause
và setStackTrace
đưa ra một số manh mối về điều đó). Vì vậy, nó là ít nhất thread-an toàn? Giả sử một trong các lớp của tôi có một trường như sau:Java: là lớp ngoại lệ có an toàn không?
private final Exception myException;
Tôi có thể phơi bày trường này một cách an toàn cho nhiều chủ đề không? Tôi không sẵn sàng thảo luận các trường hợp cụ thể ở đâu và tại sao tình huống này có thể xảy ra. Câu hỏi của tôi là nhiều hơn về nguyên tắc: tôi có thể nói rằng một lớp học cho thấy trường của loại ngoại lệ là thread-safe?
Một ví dụ khác:
class CustomException extends Exception
{
...
}
là lớp này thread-an toàn không?
+1 cho "chỉ cảm thấy sai". – Yishai
Ví dụ đầu tiên thực sự là giả thuyết.Tôi khó có thể tưởng tượng một cái gì đó như thế này trong mã của tôi :) Về ví dụ thứ hai. Tôi có thể nói trong tài liệu của tôi rằng lớp CustomException là an toàn chỉ và sau đó ngủ ngon không? –
@Vilius: bạn có phải đáp ứng một số yêu cầu hare-brained nói rằng tất cả các lớp học "phải được thread-an toàn"? Và dĩ nhiên, một siêu lớp chủ đề an toàn không tự động tạo các lớp con an toàn. Nhưng vâng, tôi sẽ không đánh mất giấc ngủ này. –