ปัญหาการเก็บรักษาวัตถุเป็นเรื่องที่เรากังวลเสมอเมื่อทำการวิจัยโปรแกรม การดำเนินการเดียวกันนี้มีอยู่ใน 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 กุญแจสำคัญคือการใช้ชุดอย่างเชี่ยวชาญ หากคุณไม่เชี่ยวชาญวิธีการนี้เพียงพอ คุณต้อง ฝึกฝนให้มากขึ้นหลังเลิกเรียน