1.StringBuilder->StringBuffer
StringBuilder线程不安全,StringBuffer线程安全
但是后者引入同步锁导致性能没有前者高,所以在堆栈封闭的情况下推荐用StringBuilder
2.SimpleDateFormate->JodaTime
SimpleDateFormate
线程不安全,因此想要在多线程环境下使用需要满足线程封闭原则, 因此SimpleDateFOrmate需要每次都新建一个实例
SimpleDateFormatsimpleDateFormat =new SimpleDateFormat("yyyy:MM:dd");
JodaTime
DateTimeFormattersimpleDateFormat = DateTimeFormat.forPattern("yyyyMMdd");
---------------------------------------------------------------------------------------------------------------------------
同步容器(同步容器性能并不高,而且不能做到完全的线程安全,因此推荐使用并发容器)
1.ArrayList -> Vector,Stack
Vectorlist =new Vector<>(); //使用Vector如果只是添加,查看那么能够保证线程安全,但是如果有删除操作,则可能会报错
for(Integer i: vector){
if (i.equals(3)) {
vector.remove(i);
}
}
Iterator iterator = vector.iterator();
while(iterator.hasNext()){
Integer i = iterator.next();
if(i.equals(3)){
vector.remove(i);
}
}
for(int i=0;i<vector.size();i++){
if(vector.get(i).equals(3)){
vector.remove(i);
}
}
foreach和iterator在遍历过程中有删除操作,均会报错,因此推荐使用for循环
2.HashMap -> HashTable(key,value不能为null)
3.Collections.synchronizedXXX(List, Set, Map)
网友评论