1/**2
* 執行緒範圍類的資料共享
3* 核心:threadlocal類
4* 實際場景:
5* hibernate的getcurrentsession方法,就是從執行緒範圍內獲取存在的session,如果不存在則新建乙個並繫結到執行緒上
6* struts將乙個請求裡的所有引數繫結到乙個執行緒範圍內的物件裡7*
@author
yzl8*9
*/10
public
class
threadpart_4 catch
(interruptedexception e) 26}
27}28}).start();
2930
new thread(new
runnable() catch
(interruptedexception e) 44}
45}46}).start();47}
48}4950
class
myadd54}
5556
class
mysub60}
6162
/**63
* 單例模式下的
64* 執行緒範圍內共享
65* 執行緒範圍外互不影響
66*
@author
yzl67*68
*/69
class
mythreadlocalobj
7576
public
void
sub()
7980
private
mythreadlocalobj(){};
81private
static threadlocallocal = new threadlocal();
8283
84public
static
mythreadlocalobj getinstance()
88return
local.get();89}
9091
public
intgetdata()
94 }
執行結果:
不同執行緒操作的物件不是同乙個,同乙個執行緒操作的是同乙個
1 thread-0 after add method value :112 thread-1 after sub method value :9
3 thread-0 after myadd add method value :12
4 thread-1 after mysub sub method value :8
5 thread-1 after sub method value :7
6 thread-0 after add method value :13
7 thread-1 after mysub sub method value :6
8 thread-0 after myadd add method value :14
9 thread-1 after sub method value :5
10 thread-0 after add method value :15
11 thread-1 after mysub sub method value :4
12 thread-0 after myadd add method value :16
13 thread-0 after add method value :17
14 thread-1 after sub method value :3
15 thread-0 after myadd add method value :18
16 thread-1 after mysub sub method value :2
17 thread-0 after add method value :19
18 thread-0 after myadd add method value :20
19 thread-1 after sub method value :1
20 thread-1 after mysub sub method value :0
4 執行緒範圍內的資料共享之ThreadLocal
1 2 執行緒範圍類的資料共享 3 核心 threadlocal類 4 實際場景 5 hibernate的getcurrentsession方法,就是從執行緒範圍內獲取存在的session,如果不存在則新建乙個並繫結到執行緒上 6 struts將乙個請求裡的所有引數繫結到乙個執行緒範圍內的物件裡7 ...
執行緒範圍內共享資料
我們可以先用所學知識來寫乙個 public class threadscopesharedata start static class a static class b 如果光像上面這樣寫的話,那毫無疑問,肯定是有問題的,如下圖所示並沒有實現執行緒共享 此時就實現執行緒內共享資料了 public c...
執行緒範圍內共享資料
假設現在有個公共的變數data,有不同的執行緒都可以去操作它,如果在不同的執行緒對data操作完成後再去取這個data,那麼肯定會出現執行緒間的資料混亂問題,因為a執行緒在取data資料前可能b執行緒又對其進行了修改,下面寫個程式來說明一下該問題 public class threadscopesh...