JDK1.5后的实用新用法

 个人理解,若有不妥,请指正

1.使用StringBuilder来代替StringBuffer
   StringBuilder和StringBuffer的主要区别是一个非线程安全,一个线程安全(方法前多加了synchronized关键字,所以性能相比有些降低).
   关于线程安全的个人理解是在多线程环境下,能够恰当的处理共享资源(或者叫临界资源),让程序正常运行达到预期行为的是线程安全,反之为非线程安全.
   共享资源是被多个线程访问并且可能被修改的类变量或者实例变量,局部变量和方法参数变量不是共享资源.
   如传统的java servlet(单实例多线程,对每个浏览器请求servlet会启动一个线程)的实例变量或类变量就属于共享资源,在处理共享资源时必须考虑有可能同时被多个线程修改.

   java中引入了synchronized机制,以保证同一时刻只有一个线程处理共享资源.这样数据的内容顺序和多个线程的处理顺序是一致的,也就是说是线程安全的.
   基于此我们会发现Web开发中大部分情形下是可以使用StringBuilder来代替jdk1.4前的StringBuffer的.
   在使用Struts2时,Struts2会为每个请求生成一个新的实例(多实例单线程),这个时候不存在可能被多个线程访问的共享资源,不用考虑线程安全性。所以一般说Struts2是线程安全的.
   Struts1是非线程安全的,需要考虑多个线程读写共享资源情形.
   ArrayList和Vector,HashMap和Hashtable情形与StringBuilder和StringBuffer类似.
  
   为了保证线程安全,还可以选择另一种替代方案 ThreadLocal
   ThreadLocal为每个线程生成一个资源的副本,避免了同步开销以及死锁的产生,
   线程间彼此操作自己的资源,互不影响.
  

2.使用动态参数特性
  
题外:java中参数传递是值传递,不是引用传递(详见core java)
   比如这样定义一个方法:根据参数个数给PreparedStatement设值

  

我们可以这样调用这个方法:
 

是不是很方便呢?在没有出现这个新特性之前,我们可能只能用null来填充不必要的参数传递了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值