synchronized ใน JAVA คืออะไร และ มีการทำงานอย่างไร
synchronized คือการทำงานแบบเป็นขึ้นเป็นตอน ประมาณว่าต้องรอให้ทำงานตรงนี้เสร็จก่อนถึงจะทำงานขึ้นต่อไปได้
ใน ภาษา Java จะเป็นการ Lock เพื่อรอครับ โดยจะมีผลกับการทำงานที่มีการทำงาน
แบบแตก Thread หลายๆ Thread พร้อมๆ กัน เมื่อทำงานมาถึงจุดที่ synchronized
แต่ละ Thread จะต้องหยุดรอและเข้าคิวกันทำงานทีละ Thread
มีเพื่อนๆ ถามมาว่า synchronized มีกี่แบบผมขอยกตัวอย่างในภาษา Java นะครับ
synchronized มีทั้งหมด 3 แบบคือ
1. Synchronized method
อันนี้ใส่ไว้เป็น modifier ของ method ได้เลย เช่น
synchronized public void test() {....}
จะมีผลให้มี Thread เรียกใช้งาน method นี้ได้เพียว 1 Thread เท่านั้น ถ้าหากมีการเรียกใช้งานพร้อมๆ กัน
จะต้องมีการ wait รอก่อน
2. synchronized Block Object
กรณีที่เราไม่อยากให้ synchronized ทั้ง method อันนี้สามารถแทรกไว้ใน Line of code ได้ เช่น
Object myObject = this;
synchronized(myObject) {......}
3. synchronized Block Class
ตัวอย่าง
Class c = this.getClass();
synchronized(c) {......}
ตอบแบบคร่าวๆ เทาๆ นะครับ 55+
ถ้าต้องการเพิ่มเติมตรงใหน เม้นถามได้