Câu hỏi phỏng vấn Spring
Câu hỏi

Spring Bean có cung cấp tính an toàn đối với luồng (thread safety) không?

Câu trả lời

Trong Spring Framework, tính an toàn đối với luồng (thread safety) của một Spring Bean phụ thuộc vào cách bean đó được cấu hình và sử dụng trong ứng dụng. Spring không tự động đảm bảo thread safety cho các bean của bạn; thay vào đó, việc đảm bảo thread safety phụ thuộc vào phạm vi (scope) của bean và cách bạn triển khai logic bên trong bean.

Phạm vi Bean và Thread Safety

  • Singleton (Mặc định): Các bean với phạm vi singleton được tạo ra một lần duy nhất trong container Spring và cùng một instance được sử dụng bởi tất cả các yêu cầu. Do đó, nếu bean singleton chứa trạng thái (stateful) hoặc có các biến instance có thể thay đổi, nó có thể không an toàn với luồng nếu nhiều luồng cùng truy cập và thay đổi trạng thái của bean đó. Để đảm bảo thread safety cho bean singleton, bạn cần phải tự triển khai logic đồng bộ hóa hoặc sử dụng các cấu trúc dữ liệu an toàn với luồng.
  • Prototype: Các bean với phạm vi prototype được tạo mới mỗi khi chúng được yêu cầu. Do đó, mỗi luồng sẽ làm việc với một instance riêng biệt của bean, giúp giảm thiểu vấn đề về thread safety liên quan đến trạng thái c...
middle

middle

Gợi ý câu hỏi phỏng vấn

middle

Annotation @Transactional được đặt ở đâu trong Spring?

middle

Spring hỗ trợ những phạm vi (scopes) bean nào? Hãy giải thích chúng.

senior

Ưu điểm của Spring MVC so với Struts MVC là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào