在 Java 程序中,常用的有兩種機制來解決多線程并發(fā)問題:
一種是sychronized方式,通過鎖機制,一個線程執(zhí)行時,讓另一個線程等待,是以時間換空間的方式來讓多線程串行執(zhí)行。
而另外一種方式就是ThreadLocal方式,通過創(chuàng)建線程局部變量,以空間換時間的方式來讓多線程并行執(zhí)行。
兩種方式各有優(yōu)劣,適用于不同的場景,要根據(jù)不同的業(yè)務場景來進行選擇。
在Spring的源碼中,就使用了ThreadLocal來管理連接,在很多開源項目中,都經(jīng)常使用ThreadLocal來控制多線程并發(fā)問題,因為它足夠的簡單,我們不需要關心是否有線程安全問題,因為變量是每個線程所特有的。