并发编程总结

对于存储数据的容器或者对象,有线程安全和线程不安全之分

1 对于线程不安全的容器或对象,一般可以通过加锁或者通过copy on write 的方法控制并发访问

2 对于线程安全的容器和对象,我们就可以在多线程环境下直接使用他们了,在这些线程安全的容器和对象,有些是支持开发的,这种方式的效率回避简单的加互斥锁的实现更好,例如 java.util.concurrent 包中有很多这样的容器类

3 如果数据在多线程中的比例很高,则一般会采用读写锁而非简单的互斥锁

有时通过加锁把使用线程不安全的容器的代码改为使用线程安全容器代码时,会遇到陷阱,在一个使用map存储信息后统计总数的例子中,map 的value 整型使用线程不安全的hashmap 代码是这样写的

并发编程总结

并发编程总结