Trong bài giảng này, chúng ta tìm hiểu các bộ đồng bộ hóa cấp cao trong
java.util.concurrent:
CountDownLatch,
CyclicBarrier,
Phaser và
Exchanger. Học cách phối hợp việc khởi chạy và kết thúc tác vụ qua
await()/
countDown(), xây dựng các phase dùng nhiều lần và hành động tại barrier với
await(), quản lý các thành viên động của “dàn nhạc” bằng
register()/
arriveAndAwaitAdvance()/
arriveAndDeregister() và trao đổi dữ liệu theo cặp qua
exchange(). Trên thực tế, chúng ta sẽ triển khai khởi động hàng loạt worker và “tick trò chơi”, đồng thời phân tích các lỗi thường gặp: tính một lần của
CountDownLatch, xử lý
BrokenBarrierException và gọi
deregister() đúng cách. Ở mọi nơi, tránh đau đầu với
wait()/
notify().