
ปัญหาการเก็บรักษาวัตถุเป็นเรื่องที่เรากังวลเสมอเมื่อทำการวิจัยโปรแกรม การดำเนินการเดียวกันนี้มีอยู่ใน ThreadLocal เราสามารถจัดเก็บและดึงข้อมูลวัตถุได้ สิ่งนี้ต้องการความเข้าใจบางประการเกี่ยวกับ ThreadLocal และการใช้วิธีการที่ตั้งค่าไว้ ด้านล่างนี้เราจะอธิบายขั้นตอนการดำเนินการทั้งหมดของการจัดเก็บและการได้มาของ ThreadLocal และแบ่งปันเนื้อหาเฉพาะกับคุณ
1. วิธีการตั้งค่าของ ThreadLocal
ชุดโมฆะสาธารณะ (ค่า T) {
เธรด t = Thread.currentThread();
แผนที่ ThreadLocalMap = getMap (t);
ถ้า (แผนที่ != null)
map.set(นี่, ค่า);
อื่น
createMap(t, ค่า);
- ด้วยวิธีการ set ของ ThreadLocal เราจะเห็นได้ว่าในโครงสร้าง <k, v> ของ ThreadLocalMap คีย์จะเก็บ ThreadLocal เอง และค่านั้นเป็นค่าที่เก็บไว้จริง กล่าวอีกนัยหนึ่งคือ สำเนาของตัวแปรที่คัดลอกโดย ThreadLocal ปัจจุบันถูกเก็บไว้ใน ThreadLocalMap
2. ThreadLocal เองไม่ได้เก็บค่า ในการใช้งาน ThreadLocal จะถูกใช้เป็นคีย์เพื่อรับค่าจาก ThreadLocalMap นอกจากนี้ยังสามารถเห็นได้จากวิธีการรับของ ThreadLocal:
สาธารณะ T รับ () {
เธรด t = Thread.currentThread();
แผนที่ ThreadLocalMap = getMap (t);
ถ้า (แผนที่ != null) {
ThreadLocalMap.Entry e = map.getEntry (สิ่งนี้);
ถ้า (อี != โมฆะ) {
@SuppressWarnings("ไม่ได้เลือก")
T ผลลัพธ์ = (T)e.value;
ส่งคืนผลลัพธ์;
-
-
กลับ setInitialValue();
-ข้างต้นคือการจัดเก็บอ็อบเจ็กต์และการได้มาของ Java ThreadLocal กุญแจสำคัญคือการใช้ชุดอย่างเชี่ยวชาญ หากคุณไม่เชี่ยวชาญวิธีการนี้เพียงพอ คุณต้อง ฝึกฝนให้มากขึ้นหลังเลิกเรียน