关于java同步的问题

黎明伟 发布于 2013/06/21 14:57
阅读 130
收藏 0

1. 是不是使用ConcurrentHashMap和CopyOnWriteArrayList后就不需synchronized方法了?

2. 读方法是否不需要synchronized?

加载中
0
乌鸦哥
乌鸦哥

1.不是 虽然 ConcurrentHashMap和CopyOnWriteArrayList 是线程安全,但是你使用的方法可能不是

2.看场景

0
m
mononite

1. 调用线程安全的代码不能保证你的代码是线程安全的,ConcurrentHashMap之类的容器只保证并发情况下自身作为容器的逻辑正确,但没办法保证你在容器上做的复合操作逻辑是否正确,这是不同层面的东西。

要确保你自己代码逻辑正确,可能需要synchronizd或者lock,也可能不需要,比如可以利用ConcurrentMap接口里的方法,在不加锁的情况下也可以正确实现一些复合操作。

2. 如果能保证要读取变量的内存可见性,比如volatile或final修饰的变量,可以不加。

返回顶部
顶部