Java常见的线程安全相关的面试题

时间:2023-05-16

过程1:HashMap和Hashtable的差异
HashMap和Hashtable都完成了Map接口,都是键值对保存数据的方式
差异1:
HashMap可以存放null
Hashtable不能存放null
差异2:
HashMap不是线程安全的类
Hashtable是线程安全的类
HashMap和Hashtable的差异
过程2:StringBuffer和StringBuilder的差异
StringBuffer是线程安全的
StringBuilder对错线程安全的2024澳门原料网1688白老虎
所以当进行大量字符串拼接操作的时候,如果是单线程就用StringBuilder会更快些,如果是多线程,就需要用StringBuffer确保数据的安全性
非线程安全的为什么会比线程安全的快?因为不需要同步嘛,省略了些时刻
StringBuffer和StringBuilder的差异
过程3:ArrayList和Vector的差异
通过在eclipse中查看源代码可以得知:
ArrayList类的声明:
publicclassArrayListextendsAbstractListimplementsList<E>,RandomAccess,Cloneable,java.io.Serializable
Vector类的声明:
publicclassVectorextendsAbstractListimplementsList<E>,RandomAccess,Cloneable,java.io.Serializable
一模一样的~
他们的差异也在于,Vector是线程安全的类,而ArrayList对错线程安全的。
过程4:把非线程安全的集合转换为线程安全
ArrayList对错线程安全的,换句话说,多个线程可以一起进入一个ArrayList目标的add办法
借助Collections.synchronizedList,可以把ArrayList转换为线程安全的List。
与此类似的,还有HashSet,LinkedList,HashMap等等非线程安全的类,都通过东西类Collections转换为线程安全的
packagemultiplethread;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;publicclassTestThread{publicstaticvoidmain(String[]args){
Listlist1=newArrayList<>();
Listlist2=Collections.synchronizedList(list1);
}
}

文章标签:

Copyright © 2016 2024澳门原料网1688白老虎,保留所有权利。 粤ICP备09033321号

2024澳门原料网1688白老虎 2024澳门原料网1688白老虎
2024澳门原料网1688白老虎
扫描二维码
与项目经理交流
2024澳门原料网1688白老虎 2024澳门原料网1688白老虎
2024澳门原料网1688白老虎
扫描二维码
与项目经理交流
2024澳门原料网1688白老虎
ciya68