Synchronization
ผมจะอธิบายคราวๆพอให้เข้าใจนะครับ เพื่อเป็นแนวทางให้กับบางปัญหาที่ต้องใช้การแก้แนวนี้
ส่วนถ้าอยากเข้าใจลึกซึ้งต้องทดลองเอง และหาอ่านบทความเพิ่มเติม จะท่องแท้
Thread หลายๆตัวนั้น อาจจะมีการเข้าถึงข้อมูลตัวเดียวกัน นั้นก็คือเป็นข้อมูลที่ถูก share ไว้ และการเข้าถึงข้อมูล ถ้ามีการเปลี่ยนแปลงข้อมูลเกิดขึ้น
โดย Thread ตัวใดตัวหนึ่ง อาจจะทำให้ Thread อื่นๆมองเห็นข้อมูลที่ผิดพลาด ถ้ามีการเข้าถึงข้อมูลในเวลาใกล้เคียงกัน
เพราะฉะนั้นอาจจะทำให้เกิด error ได้
ยกตัวอย่างเช่น
Server เราอยากให้มีการ login เข้าสู่ระบบได้แค่ที่ล่ะ 1 คนเพียงเท่านั้น
ถ้ามีการ login อยู่ไม่สามารถจะมีคนอื่นเข้าใช้ได้จนกว่าจะ คนที่เข้าใช้อยู่นั้ logout
นี้จึงเป็นวิธีการป้องกันไม่ให้เกิด error ขึ้นนั้นคือการ synchronization
******************
วิธีการก็คือใช้ คำสั่ง synchronized(instance){. . . . . .}
instance ที่เขียนไว้ ต้องเป็น instance ที่ share กันกับ thread ทุกๆตัวที่ต้องการจะเข้าใช้ส่วน code ส่วนนี้ { . . . . . }
ในที่นี้การทำให้ share กันทั้งหมดก็คือทำเป็น global นั้นก็คือ ตัวแปร static นั้นเอง
เช่น
[code]
static String lock = new String();
synchronized(lock)
{


Reply With Quote
