Không có kinh nghiệm của tôi. Đó là mã mà gọi hàm tạo, ngầm hoặc cách khác, cần được tạo an toàn cho luồng nếu ứng dụng yêu cầu nó.
Lý do là chỉ có một luồng phải khởi tạo một đối tượng tại một thời điểm, vì vậy không cần đồng bộ hóa để bảo vệ đối tượng đang được khởi tạo trong chính constructor (nếu đối tượng không hoàn thành khởi tạo, không nên được chia sẻ giữa các luồng).
Một cách khác để xem xét vấn đề này là: Đối tượng được coi là không tồn tại một cách hợp lý cho đến khi các hàm tạo của chúng trả lại. Vì vậy, một chủ đề đó là trong quá trình tạo ra một đối tượng là chủ đề duy nhất mà "biết" về nó.
Tất nhiên, quy tắc đồng bộ hóa thích hợp áp dụng đối với bất kỳ tài nguyên chia sẻ các nhà xây dựng tự truy cập, nhưng áp dụng cho bất kỳ chức năng (Tôi đã gặp những người mà không nhận ra điều này, nhà thầu tin tưởng là đặc biệt và bằng cách nào đó cung cấp truy cập độc quyền tất cả tài nguyên).
Điều này không hoàn toàn đúng. Có những mối quan tâm về thread-safe cho constructor khi bạn sử dụng mẫu thiết kế singleton. Và ngay bây giờ tôi đang tìm kiếm một giải pháp cho tình huống này. – PDuarte