Ngoài ra còn có atomics. Điều này cho phép truy cập vào lệnh so sánh và trao đổi phần cứng cơ bản là cơ sở của tất cả đồng bộ hóa. Nó cho phép bạn, ví dụ, để tăng số một cách an toàn. Nếu bạn ++
một trường dễ bay hơi, một chuỗi khác thực hiện cùng một hướng dẫn có thể đọc trường trước khi chuỗi của bạn ghi vào đó, sau đó viết lại cho nó sau chuỗi của bạn. Vì vậy, một gia số bị mất. Nguyên tử làm việc đọc và viết "nguyên tử" và vì vậy tránh được vấn đề.
Trên thực tế, các chất bay hơi, báo cáo đồng bộ, và Atomics có xu hướng buộc tất cả các dữ liệu chủ đề được làm mới từ bộ nhớ chính và/hoặc ghi vào bộ nhớ chính khi thích hợp, vì vậy không ai trong số họ là thực sự rằng mức độ thấp. Không giống như C#, Java không thực sự có khái niệm "bộ nhớ chính".)
tôi nghĩ cho câu 1, chúng ta có thể sử dụng các đối tượng ReentrantLock và Condition, chúng là loại cấu trúc mức thấp hơn. – Addict