Bài giảng này nói về tài nguyên dùng chung trong ứng dụng đa luồng là gì, vì sao xuất hiện race condition và “lost update”, và cách bảo vệ dữ liệu bằng
synchronized. Chúng ta sẽ tìm hiểu các kỹ thuật đồng bộ cơ bản (phương thức và khối), nói về các công cụ hiện đại trong
java.util.concurrent (
Lock,
ReentrantLock,
Semaphore, v.v.), xem các ví dụ thực tế với việc tăng bộ đếm và những lỗi thường gặp (tính không nguyên tử của
i
++, đối tượng khóa không đúng, các “huyền thoại” về
volatile).