Java杂类

关键字

volatile,其修饰的变量,线程不会保存私有拷贝,java默认为非Volatile,目的是提高速度。

transient,对实现了java.io.Serializable的对象中的变量加上此关键字表示该变量不是串行化的一部分。

以上参考:http://www.blogjava.net/fhtdy2004/archive/2009/06/20/286112.html

 

对于限定词及其作用范围:

http://javadinosaur.blog.sohu.com/39228842.html

private 'default' protected public  --  同一类中 同一包中 不同包中子类 不同包中非子类。

 

ThreadLocal

From:http://www.wangchao.net.cn/bbsdetail_51177.html 

ThreadLocal 是Java中一种较为特殊的线程绑定机制。通过ThreadLocal存取的数据,总是与当前线程相关,也就是说,JVM 为每个运行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出现的并发访问问题提供了一种隔离机制。

Servlet 运行是多线程的,而应用服务器并不会为每个线程都创建一个Servlet实例,也就是说,TestServlet在应用服务器中只有一个实例(在Tomcat中是这样,其他的应用服务器可能有不同的实现),而这个实例会被许多个线程并发调用,doGet 方法也将被不同的线程反复调用,可想而知,每次调用doGet 方法,这个唯一的TestServlet 实例的session 变量都会被重置,线程的运行过程中,其他的线程如果也被执行,那么session的引用将发生改变,之后线程再调用session,可能此时的session 与其之前所用的session就不再一致,显然,错误也就不期而至。ThreadLocal的出现,使得这个问题迎刃而解。

private ThreadLocal localSession = new ThreadLocal();

  public void doGet( HttpServletRequest request,HttpServletResponse response)

   throws ServletException, IOException {

   localSession.set(getSession());

   doSomething();

   session.flush();

  }

public void doSomething(){

   Session session = (Session)localSession.get();

   //基于session的存取操作

   }

同时hibernate在获得session时也有此用法。

<!--EndFragment-->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值