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

天河区pc端网站建设品牌推广手段

天河区pc端网站建设,品牌推广手段,怎么理解网络营销,网页制作公司挣钱吗首先说明ThreadLocal存放的值是线程内共享的#xff0c;线程间互斥的#xff0c;主要用于线程内共享一些数据#xff0c;避免通过参数来传递#xff0c;这样处理后#xff0c;能够优雅的解决一些实际问题#xff0c;比如hibernate中的OpenSessionInView#xff0c;就是使…首先说明ThreadLocal存放的值是线程内共享的线程间互斥的主要用于线程内共享一些数据避免通过参数来传递这样处理后能够优雅的解决一些实际问题比如hibernate中的OpenSessionInView就是使用ThreadLocal保存Session对象还有我们经常用ThreadLocal存放Connection代码如/*** 数据库连接管理类* author 爽**/public class ConnectionManager {/** 线程内共享ConnectionThreadLocal通常是全局的支持泛型 */private static ThreadLocal threadLocal  new ThreadLocal();public static Connection getCurrConnection() {// 获取当前线程内共享的ConnectionConnection conn  threadLocal.get();try {// 判断连接是否可用if(conn  null || conn.isClosed()) {// 创建新的Connection赋值给conn(略)// 保存ConnectionthreadLocal.set(conn);}} catch (SQLException e) {// 异常处理}return conn;}/*** 关闭当前数据库连接*/public static void close() {// 获取当前线程内共享的ConnectionConnection conn  threadLocal.get();try {// 判断是否已经关闭if(conn ! null  !conn.isClosed()) {// 关闭资源conn.close();// 移除ConnectionthreadLocal.remove();conn  null;}} catch (SQLException e) {// 异常处理}}}这样处理的好处统一管理Connection不需要显示传参Connection代码更优雅降低耦合性。ThreadLocal有四个方法分别为initialValueprotected T initialValue()返回此线程局部变量的当前线程的初始值。最多在每次访问线程来获得每个线程局部变量时调用此方法一次即线程第一次使用 get() 方法访问变量的时候。如果线程先于 get 方法调用 set(T) 方法则不会在线程中再调用 initialValue 方法。该实现只返回 null如果程序员希望将线程局部变量初始化为 null 以外的某个值则必须为 ThreadLocal 创建子类并重写此方法。通常将使用匿名内部类。initialValue 的典型实现将调用一个适当的构造方法并返回新构造的对象。返回返回此线程局部变量的初始值getpublic T get()返回此线程局部变量的当前线程副本中的值。如果这是线程第一次调用该方法则创建并初始化此副本。返回此线程局部变量的当前线程的值setpublic void set(T value)将此线程局部变量的当前线程副本中的值设置为指定值。许多应用程序不需要这项功能它们只依赖于 initialValue() 方法来设置线程局部变量的值。参数value - 存储在此线程局部变量的当前线程副本中的值。removepublic void remove()移除此线程局部变量的值。这可能有助于减少线程局部变量的存储需求。如果再次访问此线程局部变量那么在默认情况下它将拥有其 initialValue。很多人对ThreadLocal存在一定的误解说ThreadLocal中有一个全局的Mapset时执行map.put(Thread.currentThread(), value)get和remove时也同理但SUN的大师们是否是如此实现的我们只能去看源码了。set方法/*** Sets the current threads copy of this thread-local variable* to the specified value.  Most subclasses will have no need to* override this method, relying solely on the {link #initialValue}* method to set the values of thread-locals.** param value the value to be stored in the current threads copy of*        this thread-local.*/public void set(T value) {// 获取当前线程对象Thread t  Thread.currentThread();// 获取当前线程本地变量MapThreadLocalMap map  getMap(t);// map不为空if (map ! null)// 存值map.set(this, value);else// 创建一个当前线程本地变量MapcreateMap(t, value);}/*** Get the map associated with a ThreadLocal. Overridden in* InheritableThreadLocal.** param  t the current thread* return the map*/ThreadLocalMap getMap(Thread t) {// 获取当前线程的本地变量Mapreturn t.threadLocals;}这里注意ThreadLocal中是有一个Map但这个Map不是我们平时使用的Map而是ThreadLocalMapThreadLocalMap是ThreadLocal的一个内部类不对外使用的。当使用ThreadLocal存值时首先是获取到当前线程对象然后获取到当前线程本地变量Map最后将当前使用的ThreadLocal和传入的值放到Map中也就是说ThreadLocalMap中存的值是[ThreadLocal对象, 存放的值]这样做的好处是每个线程都对应一个本地变量的Map所以一个线程可以存在多个线程本地变量。get方法/*** Returns the value in the current threads copy of this* thread-local variable.  If the variable has no value for the* current thread, it is first initialized to the value returned* by an invocation of the {link #initialValue} method.** return the current threads value of this thread-local*/public T get() {Thread t  Thread.currentThread();ThreadLocalMap map  getMap(t);if (map ! null) {ThreadLocalMap.Entry e  map.getEntry(this);if (e ! null)return (T)e.value;}// 如果值为空则返回初始值return setInitialValue();}       有了之前set方法的分析get方法也同理需要说明的是如果没有进行过set操作那从ThreadLocalMap中拿到的值就是null这时get方法会返回初始值也就是调用initialValue()方法ThreadLocal中这个方法默认返回null。当我们有需要第一次get时就能得到一个值时可以继承ThreadLocal并且覆盖initialValue()方法。(完)
http://www.pierceye.com/news/194718/

相关文章:

  • 富阳网站建设 优帮云邯郸市商标设计品牌策划公司
  • 整站优化费用中国网新重庆
  • 找别人做网站wordpress怎么更改栏目权限
  • 珠海市建设工程质量监督检测站网站在小网站上做点击广告
  • 网站拉圈圈接口怎么做传媒网站设计
  • 淘宝客做的最好的网站盐山建网站
  • 西城企业网站建设深圳设计网站多少钱
  • 电子商务网站建设a卷网站建设厘金手指排名二一
  • 网站空间便宜网站的信息管理建设的必要性
  • 校级特色专业建设网站博达站群网站建设教程
  • 有没有做任务的网站吗网站首页开发
  • 公司名字变了网站备案济南网站建设公司哪个好点呢
  • 图书馆网站建设的规章制度企业免费招聘网站
  • 效果图网站大全系统优化的例子
  • 京东的网站建设介绍网站开发要源码多少钱
  • 东莞网站制作公司报价企业定制
  • 创同盟做网站生成拼贴的网站
  • 网站备案号查电话号码商场网站开发
  • 手机网站建站教育模板下载泰州公司注册
  • 如何做商业网站推广西安市城乡建设管理局网站的公示栏
  • 上海做兼职哪个网站腾讯企业邮箱域名是什么
  • 霸州网站制作棋牌网站建设源码
  • 茶叶网站制作模板网页设计在安阳工资多少
  • 网站建设项目验收方案自己做捕鱼网站能不能挣钱
  • 微信网页网站怎么做我为群众办实事实践活动
  • 建设银行发卡银行网站福州 网站设计
  • 网站备案号码舟山高端网站建设
  • 买奢侈品代工厂做的产品的网站名建立网站 英语怎么说
  • 网站访问者qq计算机等级培训机构
  • 可以让外国人做问卷调查的网站济南优化seo网站建设公司