首页 青云排行榜 知识中心 控制台

下列关于Java并发的说法中正确的是

CopyOnWriteArrayList适用于写多读少的并发场景

ReadWriteLock适用于读多写少的并发场景

ConcurrentHashMap的写操作不需要加锁,读操作需要加锁

只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了

CopyOnWrite机制又称为写时复制,在很多应用场景中,读操作可能会远远大于写操作。由于读操作根本不会修改原有的数据,因此如果每次读取都进行加锁操作,其实是一种资源浪费。我们应该允许多个线程同时访问 List 的内部数据,毕竟读操作是线程安全的。

ReadWriteLock,分为读锁(Read Lock)和写锁(Write Lock)。读锁是共享的,多个线程可以同时持有读锁,这就像是多人同时看同一本书。而写锁则是独占的,一旦一个线程获取了写锁,其他线程就只能乖乖等它写完,就像只有一个人能写日记,其他人等着。适用于读多写少的并发场景

ConcurrentHashMap单一操作是线程安全的,但组合操作,例如containsKey判断和put赋值在一起就不是原子操作了,因此在多线程场景下这样的操作是需要加锁的。
volatile只是保证单一操作的原子性,i++属于两个操作,不安全。
关于我们
公司简介
联系我们
联系我们
售前咨询: leizhongnan@eval100.com
售后服务: 0755-26415932
商务合作: support@eval100.com
友情链接
金蝶软件
快递100
关注我们
Copyright © 2023-2023 深圳慧题科技有限公司 粤ICP备2023109746号-1 粤公网安备44030002001082