JDK1.5后的实用新用法
来源:互联网 发布:php ddos攻击 编辑:程序博客网 时间:2024/05/18 03:19
个人理解,若有不妥,请指正
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来填充不必要的参数传递了。
- JDK1.5后的实用新用法
- Jdk1.5版本后出现的新特性
- jdk1.5 后 的新特性—枚举
- JDK1.5新特性:java枚举的用法
- 线程中JDK1.5版本后的LOCK用法
- JDK1.5-JDK1.8的新特性
- JDK1.5,JDK1.6,JDK1.7 各自的新特性
- jdk1.5的新特性
- JDK1.5的新特性
- JDK1.5的新特性
- JDK1.5的新特性
- JDK1.5的新特性
- jdk1.5的新特性
- JDK1.5的新特性
- JDK1.5的新特性
- JDK1.5的新特性
- jdk1.5的新特性
- jdk1.5的新特性
- Javascript内置变量top和parent区别
- 怎樣閱讀內核源碼
- 查看端口被占用的命令
- 谈谈 C++ 的私有继承 (Private Inheritance) 在跨平台(Cross Platform)上的妙用
- SHFILEOPSTRUCT,SHFileOperation
- JDK1.5后的实用新用法
- Head First C# 中文版 第13章 控件和图形 page602
- JAVASCRIPT 实现确认删除
- Java1.5 在Linux下的安装与配置
- Java实现利用搜索引擎收集网址的程序
- test
- 基于.net的在线购物系统
- Struts2 Unable to load configuration. - bean - jar ..... WEB-INF/lib/struts2-core-2.1.2.jar!/struts-default.xml:46:178 解决办法
- hello, 2009!