Rumah >Java >javaTutorial >Mengapa Penyegerakan pada Objek Rentetan dalam Java Bermasalah?
Menyegerakkan pada Objek Rentetan dalam Java
Memahami sebab penyegerakan pada objek Rentetan dalam Java boleh menjadi masalah mendasari isu yang anda hadapi. Secara lalai, objek String diluluskan melalui rujukan, bermakna rujukan kepada objek String yang sama dikongsi di antara bahagian program yang berlainan. Ini boleh membawa kepada tingkah laku yang tidak dijangka apabila berbilang urutan cuba mengakses objek String yang sama secara serentak.
Kunci untuk menyelesaikan isu ini terletak pada pemahaman bahawa objek String interning memastikan objek tersebut unik untuk setiap nilai. Objek Rentetan Intern disimpan dalam kolam dalam Java Virtual Machine (JVM), dan sebarang percubaan berikutnya untuk mencipta rentetan dengan nilai yang sama akan mengembalikan rujukan kepada rentetan yang diinternir dan bukannya mencipta objek baharu. Ini memastikan bahawa terdapat hanya satu contoh bagi setiap nilai String unik dalam JVM.
Dengan menggunakan Strings yang telah dimasukkan, anda boleh memastikan bahawa kunci yang anda gunakan untuk penyegerakan adalah unik dan semua urutan akan mendapatkan rujukan kepada objek yang sama. Ini akan menghasilkan tingkah laku yang dijangkakan, di mana hanya satu utas pada satu masa memasuki blok disegerakkan untuk melaksanakan operasi get/set.
Untuk melatih objek String, anda boleh menggunakan kaedah intern(). Berikut ialah contoh:
final String key = "Data-" + email; final String internedKey = key.intern();
Dengan memasukkan rentetan kekunci, anda mencipta objek unik untuknya dan sebarang percubaan seterusnya untuk mencipta rentetan dengan nilai yang sama akan mengembalikan objek yang diintai yang sama. Ini memastikan bahawa rujukan kepada kunci adalah konsisten merentas semua urutan, yang membawa kepada penyegerakan yang betul.
Atas ialah kandungan terperinci Mengapa Penyegerakan pada Objek Rentetan dalam Java Bermasalah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!