Synchronization ประสานการเข้าถึงสถานะที่แชร์ร่วมกันและแก้ไขค่าได้ (shared mutable state) ของเธรดต่าง ๆ เพื่อไม่ให้การดำเนินการสลับสับเปลี่ยนกันอย่างอันตราย ป้องกัน race condition Java มีกลไกหลายแบบ ตั้งแต่คีย์เวิร์ด synchronized ที่มีอยู่ในตัว ไปจนถึง lock แบบชัดเจนและ atomic แบบไม่ใช้ lock
synchronized — การกีดกันแบบเด็ดขาด (intrinsic lock)
{
balance;
{
(balance >= amount) {
balance -= amount;
}
}
{
() {
balance += amount;
}
}
}
