JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Application Server » Tomcat  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 ThreadLocal 在 tomcat 6 的問題
swpoker





發文: 94
積分: 0
於 2011-07-15 14:09 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
環境:
apache-tomcat-6.0.32
jdk1.6.0_26
win xp sp3

執行的時候
發生了thread local 沒有回收的現象
1
2
3
4
5
6
7
8
9
  
  static ThreadLocal local = new ThreadLocal();
 
  public Object aaa(){
    if(local.get() == null){
  local.set(new Object());
  }
  return local.get() ;
  }


我本來以為每個threadlocal內的物件會在thread結束後就會移除
然後每個thread建立的時候就會產生threadlocal內的物件

就在我使用tomcat 6 的時候
我發現了thread其實是重覆使用的(thread group)
然後再回收的時候或是重新再利用的時候threadlocal的物件沒有移除或重新初始化
所以導致使用的時候
發生了threadlocal的物件還是同一個
因為我的程式在指定threadlocal只會初始第一次
因為假定每個thread開始的時候就會初始
結果thread重覆使用也導致threadlocal的物件也重覆了
雖然我的解法是在filter那邊一開始的時候就給他做初始化或是結束的時候remove掉
可是有人知道這麼問題嗎
有沒有比較好的解法呢


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
691 ThreadLocal 在 tomcat 6 的問題 swpoker 633 2011-07-15 14:09
555 Re:ThreadLocal 在 tomcat 6 的問題 kentyeh 517 2011-07-15 15:50
693 Re:ThreadLocal 在 tomcat 6 的問題 swpoker 378 2011-07-15 16:20
» JWorld@TW »  Application Server » Tomcat

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8