今天早上我刚刚了解了ThreadLocal。我读了它应该永远是最终的,静态的,如:关于ThreadLocal的困惑
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
(Session是一个Hibernate的Session)
我的困惑是这样的:因为它是静态的,它是提供给在JVM中的任何线程。然而,它将持有访问它的每个线程的本地信息?我试图围绕这一点,所以我很抱歉,如果这不清楚。应用程序中的每个线程都可以访问同一个ThreadLocal对象,但ThreadLocal对象将存储每个线程本地的对象?
请小心在共享环境中部署的Web应用程序中使用此功能。线程本地将在所有上下文中泄漏,并且在取消部署之后,线程本地中的引用将不会被垃圾收集。您需要手动删除每个请求后的数据。 – jontro
看似矛盾。 'ThreadLocal'在每个线程中应该是唯一的,但是静态对象在每个线程之间共享。正要问这个同样的问题。 – aliteralmind