下列关于Java并发的说法中正确的是()
正确答案:B
A CopyOnWriteArrayList适用于写多读少的并发场景B ReadWriteLock适用于读多写少的并发场景C ConcurrentHashMap的写操作不需要加锁,读操作需要加锁
D 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了 解析:对于D选项,volatite只保证线程在“加载数据阶段”加载的数据是最新的,并不能保证线程安全。一个线程执行的过程有三个阶段:加载(复制)主存数据到操作栈 --> 对操作栈数据进行修改 --> 将操作栈数据写回主存volatite关键字,让编译器不去优化代码使用缓存等,以保证线程在“加载数据阶段”加载的数据都是最新的比如:某一时刻i=6是最新的值,volatile保证线程A,B都同时加载了这个最新的值,然后A执行i(A)+1=7,然后将7写回主存,B也执行i(B)+1=7,然后也将7写回内存,这样,执行两次加法,i却只增加了1