使用缓存机制在线程间进行数据的共享
2012-04-16 13:33
555 查看
当数据放在缓存中的时候,我们程序的多个线程都可以访问这个公共的区域。多个线程在访问缓存数据的时候,会产生一些竞争,这也是多线程中常常发生的问题。
下面我们分别从本地内存缓存与分布式缓存两个方面介绍竞争的带来的问题。
看下面的一段代码:
对于本地内存缓存,对于上面的代码,当这个三个线程运行起来之后,在线程1中,item的值很多时候可能为1,线程2可能是2,线程3可能是3。当然,这不一定!只是大多数情况下的可能值!
如果是对于分布式缓存,就不好说了!因为数据的修改不是立刻发生在本机的内存中的,而是经过了一个跨进程的过程。
有一些缓存模块已经实现了加锁的方式来解决这个问题,例如AppFabric。大家在修改缓存数据的时候要特别注意这一点。
下面我们分别从本地内存缓存与分布式缓存两个方面介绍竞争的带来的问题。
看下面的一段代码:
对于本地内存缓存,对于上面的代码,当这个三个线程运行起来之后,在线程1中,item的值很多时候可能为1,线程2可能是2,线程3可能是3。当然,这不一定!只是大多数情况下的可能值!
如果是对于分布式缓存,就不好说了!因为数据的修改不是立刻发生在本机的内存中的,而是经过了一个跨进程的过程。
有一些缓存模块已经实现了加锁的方式来解决这个问题,例如AppFabric。大家在修改缓存数据的时候要特别注意这一点。
相关文章推荐
- 线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用,不过要注意的是线程间需要做好同步。
- CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]
- Android应用层使用共享内存机制进行进程间交换数据
- 实现一个线程安全的内存池(使用线程私有数据机制TSD来实现)
- 线程同步(信号量,互斥,条件变量) 分类: linux应用程序 2008-04-08 09:43 2587人阅读 评论(1) 收藏 举报 进行多线程编程,最头疼的就是那些共享的数据。因为你无法知道哪个线程会在哪个时候对它进行操作,你也无法
- java线程基础巩固---线程间通信快速入门,使用wait和notify进行线程间的数据通信
- 在php中使用UNIX System V IPC机制共享应用程序数据
- Qt 线程间共享数据(qRegisterMetaType的使用)
- 使用缓存框架 ASimpleCache和SharePreferences进行数据储存
- 使用ACE互斥,同步线程共享的数据资源
- Android应用层使用共享内存机制进行进程间交换数据
- 使用FXKeychain进行 App间共享数据时需要注意的。
- redis使用工具类进行保存数据和Ehcache注解缓存类实现缓存value
- CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]
- java使用反射机制进行对象间数据赋值获取
- 黑马程序员_使用管道流进行两线程间数据交换
- [转]PHP之中使用共享内存进行高速数据更新的一种方案
- Java线程(二):线程数据共享及ThreadLocal使用
- Android中怎么使用Looper和Handler进行子线程数据操作和提交到UI线程
- 使用租约机制解决缓存数据更新的问题