栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

java.util.ConcurrentLinkedQueue

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java.util.ConcurrentLinkedQueue

您本质上是在问三个不同的问题(显式的两个和隐式的一个)。这些是我的答案:

1.如果使用,是否需要自己进行同步

java.util.ConcurrentlinkedQueue

并发集合上的原子操作将为您同步。换句话说,确保对队列的每个单独调用都是线程安全的,无需您执行任何操作。什么是
保证线程安全的,你在那些非原子集合执行任何操作。

例如,这是线程安全的,无需您执行任何操作:

queue.add(obj);

要么

queue.poll(obj);

然而; 对队列的非原子调用不是自动线程安全的。例如,以下操作 不是 自动线程安全的:

if(!queue.isEmpty()) {   queue.poll(obj);}

最后一个线程不是线程安全的,因为很有可能在调用isEmpty和调用时间轮询之间,其他线程将在队列中添加或删除项目。执行此操作的线程安全方式如下所示:

synchronized(queue) {    if(!queue.isEmpty()) {       queue.poll(obj);    }}

再次…对队列的原子调用自动是线程安全的。非原子调用不是。

2.

java.util.ConcurrentlinkedQueue
如果同时有1000个请求,我是否保证不会丢失呼叫?

由于这是一个无限制的实现,因此可以确保无论发出多少同时请求,队列都不会丢失这些请求(由于队列的并发性……您可能会用完内存或其他一些东西……但是队列在Web应用程序中,还有其他机会“丢失”请求,但是队列的同步(或缺少同步)将不是您的原因。

3.

java.util.ConcurrentlinkedQueue
表现是否足够好?

通常,我们在谈论并发时谈论“正确性”。我的意思是说,并发类保证它们是线程安全的(或对死锁,饥饿等具有鲁棒性)。当我们谈论这一点时,我们并没有对性能做任何保证(对集合的调用有多快)是)-我们仅保证它们是“正确的”。

然而;
ConcurrentlinkedQueue是一个“无需等待”的实现,因此这可能与您获得的性能一样。保证Servlet的负载性能(包括并发类的使用)的唯一方法是在负载下对其进行测试。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号