当前位置: 首页 > news >正文

湛江大型网站模板建设蒲江网站建设

湛江大型网站模板建设,蒲江网站建设,自己做网站需要多少费用,怎样写网站描述threadlocal线程本周#xff0c;我花了一些合理的时间来消除Web应用程序中的所有ThreadLocal变量。 原因是他们造成了类加载器泄漏#xff0c;我们不能再适当地取消部署我们的应用程序。 取消部署应用程序后#xff0c;当GC根目录继续引用应用程序对象时#xff0c;将发生类… threadlocal线程 本周我花了一些合理的时间来消除Web应用程序中的所有ThreadLocal变量。 原因是他们造成了类加载器泄漏我们不能再适当地取消部署我们的应用程序。 取消部署应用程序后当GC根目录继续引用应用程序对象时将发生类加载器泄漏。 如果取消部署后仍引用应用程序对象则无法对整个类加载器进行垃圾回收因为考虑的对象引用了您的应用程序类文件而应用程序类文件又引用了类加载器。 取消部署和重新部署几次后这将导致OutOfMemoryError 。 ThreadLocal是一种经典的候选人可以轻松在Web应用程序中创建类加载器泄漏。 服务器正在管理池中的线程。 这些线程的寿命比您的Web应用程序更长。 实际上它们根本不会消失直到基础JVM死亡。 现在如果将ThreadLocal放入引用类的对象的池线程中则必须*小心。 您需要确保使用ThreadLocal.remove()再次删除此变量。 Web应用程序中的问题是安全删除ThreadLocal变量的正确位置在哪里 另外您可能不想每次同事决定将另一个ThreadLocal添加到托管线程时都修改该“删除代码”。 我们围绕线程局部开发了一个包装器类该类将所有线程局部变量保留在一个单独的ThreadLocal变量中。 这是代码。 public class ThreadLocalUtil {private final static ThreadLocalThreadVariables THREAD_VARIABLES new ThreadLocalThreadVariables() {/*** see java.lang.ThreadLocal#initialValue()*/Overrideprotected ThreadVariables initialValue() {return new ThreadVariables();}};public static Object getThreadVariable(String name) {return THREAD_VARIABLES.get().get(name);}public static Object getThreadVariable(String name, InitialValue initialValue) {Object o THREAD_VARIABLES.get().get(name);if (o null) { THREAD_VARIABLES.get().put(name, initialValue.create());return getThreadVariable(name);} else {return o;}}public static void setThreadVariable(String name, Object value) {THREAD_VARIABLES.get().put(name, value);}public static void destroy() {THREAD_VARIABLES.remove();} }public class ThreadVariables extends HashMapString, Object { }public abstract class InitialValue {public abstract Object create();} 实用程序类的优点是无需开发人员就可以单独管理线程局部变量的生命周期。 该类将所有线程局部变量放在一个变量映射中。 可以在您可以安全地删除Web应用程序中的所有线程本地变量的地方调用destroy()方法。 在我们的例子中这就是ServletRequestListener - requestDestroyed()方法。 您还需要将finally块放置在其他位置。 典型的地方是HttpServlet的init() doPost() doGet()方法附近。 请求完成或意外引发异常后这可能会删除池工作线程中的所有线程本地。 有时服务器的main线程会泄漏线程局部变量。 如果是这种情况则需要找到正确的位置来调用ThreadLocalUtil - destroy()方法。 为此要弄清楚主线程实际上在哪里创建线程变量。 您可以使用调试器来做到这一点。 许多人建议出于多种原因而在Web应用程序中省略ThreadLocal 。 在池化线程环境中删除它们可能非常困难因此您可以安全地取消部署应用程序。 ThreadLocal变量可能有用但是在应用它们之前考虑其他技术是很公平的。 Web应用程序可以携带请求范围参数的替代方法是HttpServletRequest 。 许多Web框架允许通用的请求参数访问以及请求/会话属性访问而无需与本地Servlet / Portlet API绑定。 同样许多框架支持请求使用依赖项注入将作用域Bean注入到对象树中。 所有这些选项都满足大多数要求因此在使用ThreadLocal之前应考虑这些选项。 参考线程故事 JCG合作伙伴 Niklas的Web应用程序中的ThreadLocal。 翻译自: https://www.javacodegeeks.com/2012/05/threading-stories-threadlocal-in-web.htmlthreadlocal线程
http://www.zqtcl.cn/news/721123/

相关文章:

  • 汽车网站有哪些3d家装效果图制作软件
  • 荆门做网站公众号的公司网站百度不收录的原因
  • 专门做羽毛球的网站福州seo网站排名
  • 网站返回503的含义是门户网站开发合同
  • 自己做网站的成本要哪些东西wordpress模板如何管理系统
  • 做一般的网站要多久wordpress写文章页面无法显示
  • 人和兽做的网站视频汽车建设网站开发流程
  • 长春市建设工程造价管理协会网站厦门网站建设费用
  • 广东建设信息公开网站怎样策划一个营销型网站
  • 魔兽做图下载网站如何经营一个购物网站
  • 深圳做网站哪个平台好一级消防工程师考试题型
  • 网站婚礼服务态网站建设论文网站设计有限公司是干嘛的
  • 邯郸网站建设效果好广西做网站的公司
  • 网站logo上传营销型网站制作方案
  • 小说网站静态模板站长工具seo综合查询adc
  • 北京响应式网站做logo那个网站
  • 如何申请免费网站空间刚察县wap网站建设公司
  • 哪里有网站推广软件免费推广seo策略方法
  • 阿里云备案网站 网站名称怎么写京icp备案查询
  • 网站开发岗位思维导图alexa排名
  • 自适应网站建设济南济南网站建设公司
  • 巴州网站建设库尔勒网站建设钟爱网络杭州微信网站制作
  • 52做网站南京市住房城乡建设门户网站
  • 网站开发精品课程贵阳市白云区官方网站
  • seo整站优化服务会计培训班一般收费多少
  • 批量网站访问检测怎么做好手机网站开发
  • 深圳网站建设公司哪家比较好shortcodes wordpress
  • 网站内链越多越好嘛可以做3d电影网站
  • 企业网站需求文档微商引流客源最快的方法
  • 交互式网站备案业务网站在线生成