Trong khi đọc tài liệu Java về lỗi nhất quán của bộ nhớ. Tôi tìm ra những điểm liên quan đến hai hành động đó tạo ra xảy ra - trước khi mối quan hệ:Tính nhất quán của bộ nhớ - xảy ra trước mối quan hệ trong Java
Khi một tuyên bố gọi
Thread.start()
, mỗi tuyên bố rằng có một xảy ra-trước khi mối quan hệ với tuyên bố rằng cũng có một xảy ra-trước khi mối quan hệ với tất cả các tuyên bố được thực hiện bởi luồng mới . Hiệu ứng của mã dẫn đến việc tạo chủ đề mới được hiển thị cho chuỗi mới.Khi một thread chấm dứt và gây ra một
Thread.join()
trong một thread trở lại, sau đó tất cả các báo cáo thực hiện bởi các chấm dứt
chủ đề có xảy ra-trước khi mối quan hệ với tất cả những điều khoản
sau thành công tham gia. Các hiệu ứng của mã trong luồng hiện có thể hiển thị với chuỗi đã thực hiện phép nối.
Tôi không hiểu ý nghĩa của chúng. Sẽ rất tuyệt nếu ai đó giải thích nó bằng một ví dụ đơn giản.
'mối quan hệ xảy ra trước đó' có nghĩa là các tập hợp các câu lệnh đó được đảm bảo thực thi trước một bộ câu lệnh khác. Vì vậy, trong kịch bản đầu tiên .. các câu lệnh dẫn đến việc bắt đầu một luồng mới có mối quan hệ xảy ra trước đó với các câu lệnh sẽ được thực hiện bởi luồng mới được bắt đầu. Bất kỳ thay đổi nào được thực hiện bởi các câu lệnh đó sẽ được hiển thị cho các câu lệnh được thực hiện bởi luồng. –
Tôi thấy trang này hữu ích: http://preshing.com/20130702/the-happens-before-relation/ Nó đưa ra ví dụ về mối quan hệ "xảy ra-trước" giữa A và B khác với A thực sự xảy ra trước B. –