java高并发容器_高并发java实现方式有哪些?该怎么实现?

高并发大家都知道吧,高并发的各种实现方式你们都知道有哪些吗?又该怎么实现呢?一起来看看吧。

第一种方法:String.intern()

String.intern()是一个Native方法,它会在底层调用C++的

StringTable::intern实现方法。当通过语句str.intern()调用intern()方法后,JVM就会在当前类的常量池中查找是否存在与str等值的String,如果存在就直接返回常量池中相应Strnig的引用;、不存在的话,就会在常量池中创建一个等值的String,并返回这个String在常量池中的引用。

实现代码:

5d113b245fce4f5da59c585e0484eb20.png

第二种方法:乐观锁

乐观锁是相对悲观锁而言的,这是为了避免可能的数据库幻读、业务处理时间过长等等原因而引起数据处理错误的一种机制,乐观锁一般不会去刻意使用数据库本身的锁机制,它会依赖数据本身来保证数据的正确性。

实现代码:

ef6f63c0600ae48bb34162d8236861ef.png

第三种方法:类ConcurrentHashMap实现

ConcurrentHashMap是Java5中新增的一个关乎线程安全的Map集合,它可以用来替代HashTable。HashTable容器现在在竞争激烈的并发环境下,已经表现出了效率低下的缺点,原因是每个访问HashTable的线程都必须竞争同一把锁。如果容器里有多把锁,每一把锁都用于锁容器其中一部分数据的话,那么当多线程访问容器里不同数据段的数据时,线程间就不会存在锁竞争,从而有效的提高并发访问效率,这就是ConcurrentHashMap所使用的锁分段技术,开始会把数据分成一段一段的存储,再给每一段数据配一把锁,这样当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问。

实现代码:

15d0800c1cef94887968595521b7ff37.png

以上就是本文的全部内容了,想知道更多java常见问答的相关知识就请关注我们的网站吧。

推荐阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值