ThreadLocal: Bila dan Cara Menggunakannya
Pengurusan data selamat benang adalah penting dalam aplikasi berbilang benang. Walau bagaimanapun, apabila berurusan dengan objek bukan-benang-selamat, ia menjadi perlu untuk menggunakan mekanisme alternatif untuk mengekalkan integriti data. Pembolehubah ThreadLocal menawarkan penyelesaian dengan menyediakan setiap utas dengan contoh terpencil objeknya sendiri. Teknik ini amat berguna dalam senario di mana penyegerakan benang tidak diingini atau tidak boleh dilaksanakan.
Bila Menggunakan Pembolehubah ThreadLocal
Pertimbangkan untuk menggunakan pembolehubah ThreadLocal dalam situasi berikut:
Cara Menggunakan ThreadLocal Pembolehubah
Untuk mencipta dan menggunakan pembolehubah ThreadLocal:
Contoh:
Bayangkan anda mempunyai objek SimpleDateFormat yang tidak selamat untuk benang yang anda mahu gunakan dalam berbilang urutan. Untuk mengelakkan konflik akses, anda boleh mencipta pembolehubah ThreadLocal untuk SimpleDateFormat:
public class Foo { // SimpleDateFormat is not thread-safe, give one to each thread private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>() { @Override protected SimpleDateFormat initialValue() { return new SimpleDateFormat("yyyyMMdd HHmm"); } }; public String formatIt(Date date) { return formatter.get().format(date); } }
Atas ialah kandungan terperinci ThreadLocal: Bilakah Saya Harus Menggunakannya dan Bagaimana Ia Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!