开发者

ThreadLocals hard to use

开发者 https://www.devze.com 2022-12-13 07:49 出处:网络
I\'m using ThreadLocal variables (through Clojure\'s vars, but the following is the same for plain ThreadLocals in Java) and very often run into the issue that I can\'t be sure that a certain code pat

I'm using ThreadLocal variables (through Clojure's vars, but the following is the same for plain ThreadLocals in Java) and very often run into the issue that I can't be sure that a certain code path will be taken on the same thread or on another thread. For code under my control this is obviously not too big a p开发者_Go百科roblem, but for polymorphic third party code there's sometimes not even a way to statically determine whether it's safe to assume single threaded execution.

I tend to think this is a inherent issue with ThreadLocals, but I'd like to hear some advise on how to use them in a safe way.


Then don't use ThreadLocals! They are specifically for when you want a variable that's associated with a Thread, as if there were a Map<Thread,T>.


The typical use case (as far as I know) for a ThreadLocal is in a web application framework. An HTTP filter obtains a database connection on an incoming request, and stores the connection in a static ThreadLocal. All subsequent controllers needing the connection can easily obtain it from the framework using a static call. When the response is returned, the same filter releases the connection again.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号