ThreadLocal trong Java

Class ThreadLocal trong Java là một class cho phép chúng ta có thể lưu trữ và lấy giá trị của các biến trong cùng một thread đó các bạn. Chỉ cần cùng một thread thì các bạn có thể lưu trữ một giá trị và lấy nó ra bất cứ khi nào chúng ta muốn.

Các bạn có thể khởi tạo đối tượng của class ThreadLocal bình thường như các class khác như sau:

Các bạn nên chỉ định rõ kiểu dữ liệu mà đối tượng ThreadLocal sẽ lưu trữ. Ở ví dụ trên, mình đã khai báo kiểu dữ liệu mà đối tượng ThreadLocal sẽ lưu trữ là String đó các bạn!

Bây giờ thì các bạn có thể sử dụng phương thức set() của đối tượng ThreadLocal này để lưu trữ giá trị mà mình muốn, ví dụ như sau:

Để lấy giá trị này ra, các bạn có thể sử dụng phương thức get() như sau:

Kết quả khi mình chạy ví dụ:

sẽ như sau:

Nếu các bạn lấy giá trị được lưu trữ trong ThreadLocal ở một thread khác, các bạn sẽ thấy giá trị sẽ là null. Bởi vì 2 thread khác nhau sẽ không thấy giá trị trong ThreadLocal của nhau. Ví dụ, nếu mình viết thêm code để đọc giá trị của ThreadLocal mà mình đã tạo ở trên:

thì khi chạy, các bạn sẽ thấy kết quả như sau:

Ví dụ của mình có 2 thread: một là thread main chạy ứng dụng và một thread mới mà mình khởi tạo. Như các bạn thấy, thread mình tạo mới không thấy giá trị được lưu trữ trong ThreadLocal của thread main.

Các bạn có thể remove giá trị được lưu trữ trong ThreadLocal sử dụng phương thức remove():

Kết quả khi mình chạy ví dụ sẽ như sau:

Sau khi remove thì không còn giá trị nào được lưu trong ThreadLocal đó các bạn!

Add Comment