กล่าวอีกนัยหนึ่งเธรดการใช้งานซิงเกิลนี้ปลอดภัยหรือไม่:
public class Singleton
{
private static Singleton instance;
private Singleton() { }
static Singleton()
{
instance = new Singleton();
}
public static Singleton Instance
{
get { return instance; }
}
}
Xสิ้นสุดลงด้วยการได้โดยไม่ต้องเกลียว-1 ไม่ใช่ปัญหาความปลอดภัยของเธรด แต่เครื่องมือเริ่มต้นx = -1จะรันก่อน (อยู่ในบรรทัดก่อนหน้าในรหัสซึ่งเป็นหมายเลขบรรทัดล่าง) แล้วการเริ่มต้นX = GetX()การทำงานซึ่งจะทำให้บนกรณีเท่ากับX -1จากนั้นตัวสร้างแบบคงที่ "ชัดเจน" จะเป็นตัวเริ่มต้นของประเภทstatic C() { ... }ซึ่งจะเปลี่ยนเป็นตัวพิมพ์เล็กxเท่านั้น ดังนั้นหลังจากนั้นMainวิธีการ (หรือOtherวิธีการ) สามารถไปและอ่านตัวพิมพ์Xใหญ่ ค่าของมันจะเป็นเท่า-1กันแม้จะมีเพียงหนึ่งเธรด
Instanceพร้อมกัน หนึ่งในเธรดจะถูกบอกให้เรียกใช้ประเภทการเริ่มต้นครั้งแรก (หรือที่เรียกว่าตัวสร้างแบบคงที่) ในขณะเดียวกันเธรดอื่น ๆ ที่ต้องการอ่านInstanceคุณสมบัติจะถูกล็อกจนกว่าตัวเตรียมข้อมูลเบื้องต้นชนิดจะเสร็จสิ้น เฉพาะหลังจากที่ initializer ฟิลด์ได้ข้อสรุปแล้วเธรดจะได้รับอนุญาตให้รับInstanceค่า ดังนั้นไม่มีใครสามารถเห็นInstanceความเป็นnullอยู่