Java面试问题之四十一

请问Java提供了哪些常用的线程安全的类,在一个可变类中采用什么措施可以降低因保证线程安全而损失的并发性能。

答:所谓的线程安全就是不需要手动添加同步方法或者同步块来保证线程的同步,一般线程安全类都包含了同步的方法或者同步代码块,所以耗费了很多的系统性能。在非必要的情况下,一般尽量避免使用线程安全类,以提高系统的性能。

Java中提供常用的线程安全类有:
(1)Vector(向量类)
(2)Hashtable类
(3)String类,由于这个类是不可变类,所以此类也肯定是线程安全的。
此外,常用的非线程安全类有:
(1)ArrayList类
(2)HashMap类
(3)HashSet类

可变类的线程安全往往以降低并发性能为代价,为了减小这一负面影响,可以采取以下措施:
第一,只对可能导致资源竞争的代码进行同步。那些不改变类状态的方法可以不必加上synchronized关键字来保证其同步。

第二,如果一个可变类有两种运行环境——单线程运行环境和多线程运行环境,那么可以为这个类提供两种实现,在单线程运行环境中使用未采取同步的类的实现,在多线程运行环境中使用采取同步的类的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值