刚刚开始研究Java ThreadLocal类型。我可以理解这些典型的例子,比如定义一个类,它有一个被声明为ThreadLocal的实例字段;然后,在创建这个类的对象之后,我们将这个对象传递给,比如三个独立的线程,它们将各自拥有这个共享对象的副本。我读过关于使用ThreadLocal的Hibernate代码:
private static final ThreadLocal threadSession = new ThreadLocal();
我们有一个gPRC服务,它需要在类中的ThreadLocal变量中设置auth/identity信息,以便正确调用另一个服务。gPRC服务从请求中获取auth/标识信息,因此我正在考虑使用拦截器。the identify from the request
AuthContext.setPrincipal(principal); // underneath it uses a ThreadLocal如果上述情况属实,那么问题是,在ThreadLocal世界中设置gRPC变量的规范方法是
然而,当Tomcat取消部署我们的webapp时,我们看到了一些与ThreadLocal相关的内存泄漏的严重错误警告。SEVERE: The web application [/hotwire] created a ThreadLocal with key of type [org.apache.avro.Schemaorg.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/hotwire]