首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

在WEB环境中运用ThreadLocal注意事项

2012-10-24 
在WEB环境中使用ThreadLocal注意事项?? ? 具体的ThreadLocal的原理,这里就不在累赘了,网上很多这样的文章。

在WEB环境中使用ThreadLocal注意事项

?? ? 具体的ThreadLocal的原理,这里就不在累赘了,网上很多这样的文章。主要是讲下在WEB环境中,使用ThreadLocal要特别主意的问题。

?? ?ThreadLocal 其中的一个用处是 在同一个线程间共享变量,在不同的线程间隔离。

?private final static ThreadLocal<Map<String,ImportMapping>> areaSession = new ThreadLocal<Map<String,ImportMapping>>();

protected ImportMapping findAreaMapping(List<ImportMapping> areaList,                                String val,                                 String corpId) {Map<String,ImportMapping> mappingMap = areaSession.get();if (mappingMap == null) {mappingMap = new HashMap<String, ImportMapping>();...............areaSession.set(mappingMap);}return mappingMap.get(corpId + KEY_SPLIT + val);}

?有很多地方会调用?findAreaMapping 这个方法,这边用到 ThreadLocal 的目的是,当执行完一次findAreaMapping取数据之后,就直接从

ThreadLocal中取。在业务上 findAreaMapping里面取出来的数据是不一样的。但是由于在WEB环境中,WEB容器

是会维护一组线程池的。也就是两次不同的请求,有可能被分配到了同一个线程。这样会造成第二次不同的请求里面,取到了第一次请求里面塞入的变量值。

?? ? ?在WEB环境中使用?ThreadLocal 一定要注意这一点。

热点排行