Ada banyak cara untuk menulis singleton, dan contoh ini adalah cara untuk menulis singleton malas. Apa yang harus dicatat di lingkungan konkurensi yang tinggi:
1. Ketika singleton mengakses secara bersamaan dan memanggil metode GetInstance yang sesuai, itu juga akan menyebabkan beberapa objek instance dibuat, dan penguncian diperlukan.
2. Menggunakan sinkronisasi adalah solusi yang lebih baik. Keuntungannya adalah bahwa kodenya ringkas, dan kerugiannya adalah bahwa pemeliharaan tidak dapat ditangani dan dipelihara saat melempar pengecualian, sehingga sistemnya dalam kondisi yang baik.
3. Pengaturan kunci yang ditampilkan adalah solusi yang baik.
Kode menggunakan kunci adalah sebagai berikut:
demo paket; impor java.util.concurrent.locks.lock; impor java.util.concurrent.locks.reentrantlock; / ** * Penggunaan referensi * @author watson_xu * @date 2012-1-8 04:31:09 pm */ kelas akhir public singletoncontext {private static singletoncontext sc = null; private singletoncontext () {} private static lock lock = baru reentrantlock (); public static singletoncontext getInstance () {if (sc == null) {lock.lock (); if (sc == null) {coba {sc = singletonContext baru (); } akhirnya {lock.unlock (); }} return sc; }}Saat menggunakan disinkronkan, kode ini adalah sebagai berikut:
demo paket; / ** * Referensi untuk menggunakan * @author watson_xu * @date 2012-1-8 04:31:09 pm */ public final class singletoncontext {private static singletoncontext sc = null; private singleTonContext () {} public static Synchronized singletoncontext getInstance () {if (null == sc) {sc = new singletoncontext (); } return new SingletOnContext (); }}Untuk melihat lebih banyak sintaks Java, Anda dapat mengikuti: "Berpikir dalam manual Cina Java", "JDK 1.7 Manual Referensi Versi Bahasa Inggris Resmi", "JDK 1.6 API Java Manual Referensi Cina", "JDK 1.5 API Java Manual Referensi Cina". Saya juga berharap semua orang akan lebih mendukung wulin.com.