志在指尖
用双手敲打未来

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

过程1:HashMap和Hashtable的差异
HashMap和Hashtable都完成了Map接口,都是键值对保存数据的方式
差异1:
HashMap可以存放null
Hashtable不能存放null
差异2:
HashMap不是线程安全的类
Hashtable是线程安全的类
HashMap和Hashtable的差异
过程2:StringBuffer和StringBuilder的差异
StringBuffer是线程安全的
StringBuilder对错线程安全的Java
所以当进行大量字符串拼接操作的时候,如果是单线程就用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);
}
}

未经允许不得转载:IT技术网站 » Java常见的线程安全相关的面试题
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载