มีหลายวิธีในการเขียน Singletons และตัวอย่างนี้เป็นวิธีการเขียน Singletons ขี้เกียจ สิ่งที่ควรสังเกตในสภาพแวดล้อมพร้อมกันที่สูง:
1. เมื่อ Singleton เข้าถึงพร้อมกันและเรียกใช้วิธีการ getInstance ที่สอดคล้องกันมันจะทำให้วัตถุอินสแตนซ์หลายรายการถูกสร้างขึ้นและจำเป็นต้องมีการล็อค
2. การใช้ซิงโครไนซ์เป็นทางออกที่ดีกว่า ข้อได้เปรียบคือรหัสนั้นกระชับและข้อเสียคือการบำรุงรักษาไม่สามารถจัดการและบำรุงรักษาได้เมื่อโยนข้อยกเว้นดังนั้นระบบจึงอยู่ในสถานะที่ดี
3. การตั้งค่าล็อคที่แสดงเป็นทางออกที่ดี
รหัสที่ใช้ล็อคมีดังนี้:
การสาธิตแพ็คเกจ; นำเข้า java.util.concurrent.locks.lock; นำเข้า java.util.concurrent.locks.reentrantlock; / ** * การอ้างอิงการใช้งาน * @author Watson_xu * @date 2012-1-8 04:31:09 PM */ สาธารณะชั้นสุดท้ายชั้นสุดท้าย SingletonContext {ส่วนตัว SingletonContext SC = NULL; Private SingletonContext () {} ล็อคแบบคงที่ส่วนตัว = ใหม่ reentrantlock (); สาธารณะ SingletonContext GetInstance () {ถ้า (sc == null) {lock.lock (); if (sc == null) {ลอง {sc = ใหม่ singletonContext (); } ในที่สุด {lock.unlock (); }} return sc; -เมื่อใช้ซิงโครไนซ์รหัสมีดังนี้:
การสาธิตแพ็คเกจ; / ** * การอ้างอิงถึงใช้ * @author Watson_xu * @date 2012-1-8 04:31:09 PM */ ระดับสุดท้ายของคลาสสุดท้าย SingletonContext {ส่วนตัวคงที่ SingletonContext SC = NULL; Private SingletonContext () {} สาธารณะแบบคงที่แบบคงที่ SingletonContext getInstance () {ถ้า (null == sc) {sc = new SingletonContext (); } ส่งคืน SingletonContext ใหม่ (); -หากต้องการดูไวยากรณ์ Java เพิ่มเติมคุณสามารถติดตามได้: "การคิดในคู่มือจีน Java", "JDK 1.7 คู่มือการอ้างอิงอย่างเป็นทางการภาษาอังกฤษ", "JDK 1.6 API Java คู่มืออ้างอิงจีน", "JDK 1.5 API Java คู่มืออ้างอิงจีน" ฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น