Keselamatan benang dicapai di Java melalui kelas ThreadLocal, yang menyediakan kaedah get() dan set() untuk mengakses dan menetapkan pembolehubah setempat-benang dalam salinan peribadi setiap benang. Dalam kod sampel, utas kanak-kanak memperoleh, menetapkan dan mencetak nilai pembolehubah setempat utas, dan utas utama juga mengakses pembolehubah itu, menunjukkan mekanisme keselamatan utas benang berbeza yang mengendalikan salinan mereka sendiri. Dalam amalan, pembolehubah storan setempat-benang boleh digunakan untuk menyimpan maklumat yang dikaitkan dengan urutan tertentu, seperti data sesi untuk setiap permintaan dalam pelayan web. . Pembolehubah ini dipanggil pembolehubah setempat-benang dan memastikan keselamatan benang dalam persekitaran berbilang benang.
Di Java, anda boleh menggunakan kelas ThreadLocal
untuk mencipta pembolehubah setempat benang. KelasThreadLocal menyediakan kaedah get()
danset()
untuk mengakses dan menetapkan nilai pembolehubah setempat benang.Contoh kod:
public class ThreadLocalExample { private static ThreadLocal<Integer> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { // 创建一个子线程 Thread thread = new Thread(() -> { // 获取线程本地变量的值 Integer value = threadLocal.get(); // 设置线程本地变量的值 threadLocal.set(value + 1); System.out.println("Thread: " + Thread.currentThread().getName() + ", Value: " + value); }); // 启动子线程 thread.start(); // 主线程等待子线程结束 try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } // 获取线程本地变量的值 Integer value = threadLocal.get(); System.out.println("Main: " + Thread.currentThread().getName() + ", Value: " + value); } }Kes praktikal: Dalam senario kehidupan sebenar, pembolehubah storan setempat benang boleh digunakan untuk menyimpan maklumat yang dikaitkan dengan urutan tertentu. Contohnya, dalam aplikasi pelayan web, setiap permintaan boleh menggunakan pembolehubah setempat-benang sendiri untuk menyimpan data sesi pengguna. Ini memastikan keselamatan utas kerana setiap utas mempunyai salinan data sesi sendiri dan tidak boleh diganggu oleh utas lain.
Perlu diingatkan bahawa kelas ThreadLocal
bergantung pada mekanisme rujukan Java yang lemah. Oleh itu, jika benang berakhir dan tiada rujukan kukuh yang menunjuk kepada pembolehubah setempat-benang, pembolehubah itu akan menjadi sampah yang dikumpul.Atas ialah kandungan terperinci Bagaimana untuk membuat pembolehubah storan setempat-benang dalam fungsi Java selamat-benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!