1.什么是Treadlocal棵帽?
ThreadLocal是什么呢?其實ThreadLocal并非是一個線程的本地實現(xiàn)版本,它并不是一個Thread翘瓮,而是thread local variable(線程局部變量)。也許把它命名為ThreadLocalVar更加合適裤翩。線程局部變量(ThreadLocal)其實的功用非常簡單资盅,就是為每一個使用該變量的線程都提供一個變量值的副本,是每一個線程都可以獨立地改變自己的副本岛都,而不會和其它線程的副本沖突律姨。從線程的角度看,就好像每一個線程都完全擁有該變量臼疫。線程局部變量并不是Java的新發(fā)明择份,在其它的一些語言編譯器實現(xiàn)(如IBM XL FORTRAN)中,它在語言的層次提供了直接的支持烫堤。因為Java中沒有提供在語言層次的直接支持荣赶,而是提供了一個ThreadLocal的類來提供支持,所以鸽斟,在Java中編寫線程局部變量的代碼相對比較笨拙拔创,這也許是線程局部變量沒有在Java中得到很好的普及的一個原因吧。
2.為什么需要Treadlocal富蓄?
ThreadLocal可以在整個線程中有效剩燥,所以可以將一些表示層的變量存儲到ThreadLocal中,此時可以在DAO層獲取ThreadLocal中的數(shù)據(jù),這樣可以省略一些DAO層所需要的公共參數(shù)
3.如何使用Treadlocal灭红?
1侣滩、ThreadLocal的定義
定義一個類叫做SystemContext,在這個類中定義一系列的static的ThreadLocal變量变擒。并且提供相應(yīng)的get和set和remove方法
2君珠、創(chuàng)建相應(yīng)的Filter在表示層傳遞信息時將這些數(shù)據(jù)寫入到ThreadLocal中
3、在DAO中獲取相應(yīng)的ThreadLocal對象進行處理
4.filter代碼
5.web.xml代碼