เมื่อคุณใช้คีย์เวิร์ดที่ซิงโครไนซ์ mutex จะถูกใช้เพื่อความปลอดภัยของเธรดและการเข้าถึงรีซอร์สที่แบ่งใช้แบบซิงโครนัส การดำเนินการที่มีการประสานงานเพิ่มเติมระหว่างเธรดมักจำเป็นเพื่อทำงานที่ซับซ้อนพร้อมกันให้เสร็จสิ้น ตัวอย่างเช่น โหมดรอ/แจ้งเตือนเป็นกลไกการดำเนินการที่มีการประสานงานในสภาพแวดล้อมแบบมัลติเธรด
การรับและปลดล็อคผ่าน API (โดยใช้ mutex) หรือการเรียก wait/notify และวิธีการอื่นล้วนเป็นวิธีการเรียกระดับต่ำทั้งหมด นอกจากนี้ จำเป็นต้องสร้างนามธรรมในระดับที่สูงขึ้นสำหรับการซิงโครไนซ์เธรด คลาสเสริมการซิงโครไนซ์ที่ใช้กันทั่วไปคือการสรุปกลไกกิจกรรมการซิงโครไนซ์เพิ่มเติมระหว่างเธรดตั้งแต่สองเธรดขึ้นไป หลักการภายในคือการบรรลุการประสานงานที่ซับซ้อนระหว่างเธรดโดยใช้ API พื้นฐานที่มีอยู่
มีคลาสตัวช่วยการซิงโครไนซ์ 5 คลาสที่เหมาะสำหรับสถานการณ์การซิงโครไนซ์ทั่วไป:
1. Semaphore Semaphore เป็นเครื่องมือซิงโครไนซ์แบบคลาสสิก เซมาฟอร์มักถูกใช้เพื่อจำกัดจำนวนทรัพยากร (ฟิสิคัลหรือโลจิคัล) ที่เธรดสามารถเข้าถึงได้พร้อมกัน
2.CountDownLatch เป็นคลาสเสริมการซิงโครไนซ์ที่เรียบง่ายแต่ใช้กันทั่วไป วัตถุประสงค์คือเพื่ออนุญาตให้เธรดตั้งแต่หนึ่งเธรดขึ้นไปบล็อกจนกว่าชุดการดำเนินการในเธรดอื่นจะเสร็จสมบูรณ์
3. CyclicBarrier เป็นจุดซิงโครไนซ์หลายทางที่สามารถรีเซ็ตได้ ซึ่งมีประโยชน์ในสถานการณ์การเขียนโปรแกรมพร้อมกันบางสถานการณ์ ช่วยให้กลุ่มเธรดรอกันจนกว่าจะถึงจุดกั้นทั่วไป CyclicBarrier มีประโยชน์ในโปรแกรมที่เกี่ยวข้องกับชุดเธรดที่มีขนาดคงที่ซึ่งต้องรอซึ่งกันและกันเป็นครั้งคราว เนื่องจากแผงกั้นสามารถนำกลับมาใช้ใหม่ได้หลังจากที่ด้ายที่รอถูกคลายออก จึงเรียกว่าแผงกั้นแบบวน
4. Phaser เป็นตัวกั้นการซิงโครไนซ์แบบใช้ซ้ำได้ซึ่งมีฟังก์ชันคล้ายกับ CyclicBarrier และ CountDownLatch แต่มีความยืดหยุ่นในการใช้งานมากกว่า เหมาะอย่างยิ่งสำหรับการประสานงานงานการคำนวณแบบเป็นเฟสพร้อมกันในสภาพแวดล้อมแบบมัลติเธรด (เมื่อจำเป็นต้องมีการซิงโครไนซ์ระหว่างงานย่อยในเฟรมเวิร์ก Fork/Join ควรเลือกใช้ Phaser)
5.Exchanger อนุญาตให้สองเธรดแลกเปลี่ยนออบเจ็กต์ที่จุดนัดพบซึ่งมีประโยชน์มากกว่าในการออกแบบไปป์ไลน์บางอย่าง Exchanger จัดให้มีจุดซิงโครไนซ์ซึ่งคู่ของเธรดสามารถแลกเปลี่ยนข้อมูลได้ แต่ละเธรดจะให้ข้อมูลแก่เธรดของคู่ค้าผ่านการป้อนข้อมูลของวิธีการแลกเปลี่ยน () และรับข้อมูลที่ให้ไว้โดยเธรดของคู่ค้าและส่งกลับ เมื่อสองเธรดแลกเปลี่ยนอ็อบเจ็กต์ผ่าน Exchanger การแลกเปลี่ยนจะปลอดภัยสำหรับทั้งสองเธรด Exchanger ถือได้ว่าเป็นรูปแบบสองทิศทางของ SynchronousQueue ซึ่งมีประโยชน์มากกว่าในแอปพลิเคชันที่เกี่ยวข้องกับอัลกอริทึมทางพันธุกรรมและการออกแบบไปป์ไลน์