生活随笔
收集整理的這篇文章主要介紹了
ThreadLocal的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ThreadLocal
線程局部變量
是一種多線程間,并發訪問變量的解決方案
與synchronized等加鎖的不同
ThreadLocal完全不提供鎖,使用以空間換時間的手段
為每個線程提供變量的獨立版本,以保障線程安全
性能
ThreadLocal不具有絕對的優勢
在并發不是很高的時候,加鎖的性能會更好
作為一套與鎖完全無關的線程安全解決方案
在高并發量,或者競爭激烈的場景
使用ThreadLocal可以在一定程度上減少鎖競爭
package com.bjsxt.
base.conn010;
public class ConnThreadLocal {
public static ThreadLocal<String> th =
new ThreadLocal<String>();
public void setTh(String
value) {th.
set(
value);}
public void getTh() {System.
out.println(Thread.currentThread().getName() +
":" +
this.th.
get());}
public static void main(String[] args) throws InterruptedException {final ConnThreadLocal ct =
new ConnThreadLocal();Thread t1 =
new Thread(
new Runnable() {@Override
public void run() {ct.setTh(
"張三");ct.getTh();}},
"t1");Thread t2 =
new Thread(
new Runnable() {@Override
public void run() {
try {Thread.sleep(
1000);ct.getTh();}
catch (InterruptedException e) {e.printStackTrace();}}},
"t2");t1.start();t2.start();}}
運行
總結
以上是生活随笔為你收集整理的ThreadLocal的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。