ໃນຂະນະທີ່ການນໍາໃຊ້ຮູບແບບການຊິງໄດ້, ພຽງແຕ່ຫນຶ່ງຕົວຢ່າງແມ່ນການສ້າງຕັ້ງໃນກະທູ້ຫຼາຍ?
ການນໍາໃຊ້ລະດັບ singleton threadsafe ຈະຮັບປະກັນວ່າມີພຽງແຕ່ຫນຶ່ງຕົວຢ່າງແມ່ນການສ້າງຕັ້ງ.
ລະດັບຜະນຶກສາທາລະນະ Singleton
{
static ສ່ວນຕົວ Singleton singleton = null;
ສ່ວນຕົວ singletonLock ວັດຖຸອ່ານຢ່າງດຽວ static = ວັດຖຸໃຫມ່();
ສ່ວນຕົວ Singleton() {}
static ສາທາລະນະ Singleton getInstance()
{
ລັອກ (singletonLock)
{
ຖ້າຫາກວ່າ (null singleton ==)
{
singleton = new Singleton();
}
ຊິງກັບຄືນມາ ;
}
}
}
ບັນຫາທີ່ຈະຍົກສູງບົດບາດໃນເວລາທີ່ການສ້າງຕົວຢ່າງທໍາອິດ.
ການນໍາໃຊ້ lock() ຈະສະຫນອງໃຫ້ພວກເຮົາມີຄວາມປອດໄພກະທູ້ເພື່ອຫຼີກເວັ້ນການປະຕິບັດຂອງທັງສອງກະທູ້ທີ່ໃຊ້ເວລາດຽວກັນໄດ້ເພື່ອສ້າງຕົວຢ່າງ.
ອີກເທື່ອຫນຶ່ງພວກເຮົາໄດ້ກວດສອບໄດ້ (null singletonobject ==) ສະນັ້ນມັນຈະຮັບປະກັນວ່າການຍົກຕົວຢ່າງມີພຽງແຕ່ຫນຶ່ງຄັ້ງຈະໄດ້ຮັບການສ້າງຕັ້ງຂື້ນ.
ທາງເລືອກທີ່ກວດສອບຈະພິສູດຢ່າງເຕັມທີ່ສໍາລັບການຮຽນຂອງພວກເຮົາ.
ອອກຈາກ Reply ເປັນ