`

高并发缓存实现

    博客分类:
  • java
 
阅读更多
private static ConcurrentHashMap<String, Future<Long>> glodDeptFutuMap = new ConcurrentHashMap<String, Future<Long>>();

Future 接口允许表示已经完成的任务、正在执行过程中的任务或者尚未开始执行的任务。

 

FutureTask 类实现了 Future,并包含一些构造函数,允许将 Runnable 或 Callable(会产生结果的 Runnable)和 Future 接口封装。因为 FutureTask 也实现 Runnable,所以可以只将 FutureTask 提供给 Executor。一些提交方法(如 ExecutorService.submit())除了提交任务之外,还将返回 Future 接口。
Future.get() 方法检索任务计算的结果(或如果任务完成,但有异常,则抛出 ExecutionException)。如果任务尚未完成,那么Future.get() 将被阻塞,直到任务完成;如果任务已经完成,那么它将立即返回结果。

 

利用 ConcurrentHashMap 中的原子 putIfAbsent() 方法,确保仅有一个线程试图计算给定关键字的值。如果其他线程随后请求同一关键字的值,它仅能等待(通过 Future.get() 的帮助)第一个线程完成。因此两个线程不会计算相同的值

 

while(true){
    Future<Long> deptV = glodDeptFutuMap.get(key);
    if (deptV == null) {
         Callable<Long> eval = new Callable<Long>(){
	 public Long call() throws Exception {
	     return Long(value);//返回计算结果值。。。。
                 }				
         };
        FutureTask<Long> ft = new FutureTask<Long>(eval);
        deptV = glodDeptFutuMap.putIfAbsent(key, ft);
        if (deptV == null) {
	deptV = ft;//指向 futuretask 获取到结果值
                ft.run();
         }						
   }
    try {
          value =  deptV.get();//等待多线程计算结果值
      } catch (InterruptedException e) {
            e.printStackTrace();
       } catch (ExecutionException e) {
           e.printStackTrace();
       }
      break;
}

 

 

 

 

 

 

 

 

 


分享到:
评论
1 楼 sblig 2012-09-04  

相关推荐

    高并发缓存器(基于ehcache)

    **高并发缓存器(基于ehcache)** 在IT行业中,面对高并发场景时,缓存技术是提高系统性能和响应速度的关键手段。基于ehcache的缓存器是一种常见的解决方案,它能够在内存中存储常用数据,减少对数据库的访问,从而...

    如何实现超高并发的无锁缓存

    在传统的实现方式中,通常采用单个锁来保护整个缓存结构,这种做法在并发量较低的情况下没有明显问题,但在高并发环境下容易成为瓶颈。为了解决这一问题,可以考虑将原有的单一缓存结构通过水平切分的方式转换为多个...

    基于SSM框架实现的高并发商品秒杀系统源码+项目说明(c3p0作为连接池,Redis为缓存实现高并发 ).zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用!...基于SSM框架实现的高并发商品秒杀系统源码+项目说明(c3p0作为连接池,Redis为缓存实现高并发 ,同时通过MySQL优化降低了网络延迟与GC的影响).zip

    《高并发网站与分布式缓存Redis与开发实战》3.0.pdf

    高并发网站通常采用多种技术手段,如负载均衡、分布式部署、缓存技术等来实现。 2. 分布式缓存Redis:Redis是一个开源的高性能键值对数据库,经常被用作缓存系统。在高并发网站中,使用Redis作为缓存可以大幅度提升...

    高并发系统设计.pdf

    在本文中,我们将探讨三种主要的高并发系统设计方法,以及如何利用缓存来提升系统的性能。 首先,我们需要理解两种扩展策略:Scale-up和Scale-out。Scale-up,即纵向扩展,是指通过提升单个服务器的硬件配置,如...

    基于SSM框架实现的高并发商品秒杀系统完整源码+说明(c3p0作为连接池,Redis为缓存实现高并发 ).zip

    【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的...基于SSM框架实现的高并发商品秒杀系统源码+项目说明(c3p0作为连接池,Redis为缓存实现高并发 ,同时通过MySQL优化降低了网络延迟与GC的影响).zip

    高速缓存实现源码

    并发访问控制是高速缓存实现中的另一大挑战。在Java中,可以使用synchronized关键字或者java.util.concurrent包中的工具类如ReentrantLock、Semaphore等来实现线程安全。例如,当多个线程同时尝试读写缓存时,需要...

    基于AJAX的高并发数据传输与缓存技术研究

    **基于AJAX的高并发数据传输与缓存技术研究** 在现代Web开发中,AJAX(Asynchronous JavaScript and XML)已经成为提升用户体验的关键技术。通过在后台与服务器进行异步数据交换,AJAX允许网页实现部分刷新,无需...

    亿级流量电商详情页系统的大型高并发与高可用缓存架构实战-未加密

    1. Spring Cache:Spring框架提供的缓存抽象层,支持多种缓存实现。 2. Ehcache:轻量级内存缓存库,适用于小型项目。 3. Redis:内存数据库,支持字符串、哈希、集合等多种数据结构,广泛应用于缓存场景。 六、...

    亿级高并发大型电商详情页系统的高性能与高可用缓存架构实战.pdf

    总体而言,本课程内容十分丰富,覆盖了缓存架构的多个重要方面,包括从缓存技术的选择与应用,到搭建完整的高可用、高并发缓存系统,并涉及故障应对和数据恢复的实践经验。课程的每个部分都紧密结合实际应用,为学习...

    一种高并发分布式缓存服务架构.pdf

    本文介绍了分布式缓存服务架构的设计和实现,旨在解决传统单机缓存的缺陷,实现高并发、高可用和高扩展性的缓存服务。 缓存在软件中被广泛应用,它的作用是将频繁访问的热点数据加载在内存中,提升访问的性能和效率...

    .net高并发解决方案

    在高并发环境下,EF可以帮助我们减少与数据库的直接交互,通过实体的缓存和批处理操作来提高性能。例如,使用EF的DbContext缓存机制可以避免频繁的数据库查询,而DbContext的SaveChanges方法则支持批量保存,从而...

    亿级流量电商详情页系统的大型高并发与高可用缓存架构实战-未加密版本.txt

    亿级流量电商详情页系统的大型高并发与高可用缓存架构实战-未加密版本有时间可以学习一下,挺不错的一个资源!(对高并发,高可用缓存等详细介绍)

    基于Node.js的高并发电商购物系统设计与实现

    【基于Node.js的高并发电商购物系统设计与实现】 在当今互联网时代,电子商务网站面临着日益增长的并发访问压力,特别是由于直播营销和各种电商节日活动的兴起,这使得企业对高性能、高并发的系统需求更加迫切。...

    Go-一个用go实现的零GC延迟高并发支持的缓存系统freecache

    标题中的“Go-一个用go实现的零GC延迟高并发支持的缓存系统freecache”指的是使用Go语言编写的freecache库,这个库设计的目标是实现无垃圾收集(GC)延迟,并能高效地支持高并发场景。在Go语言中,垃圾收集是自动...

    最新亿级流量电商详情页系统的大型高并发与高可用缓存架构实战第一版附全套资料

    详细讲解如何实现一个复杂的缓存系统架构,去直接支撑电商背景下的高并发与高性能的访问,同时基于缓存架构本身所处的复杂分布式系统架构环境下,如何设计与实现一个高可用的分布式系统架构。期望通过本套课程能帮助...

    Java系统的高并发解决方法详解

    Java系统的高并发解决方法详解 ...Java系统的高并发解决方法可以通过静态化、图片服务器分离、数据库集群和库表散列、缓存等多种方法来实现,选择哪种方法需要根据实际情况进行选择和组合,以提高系统的性能和扩展性。

    Java + Netty 实现的高并发高可用MQTT服务broker,轻松支持10万并发,已用于生产环境

    Java + Netty 实现的高并发高可用MQTT服务broker,轻松支持10万并发,已用于生产环境 技术体系:(使用 netty 实现通信及协议解析,使用 nutzboot 提供依赖注入及属性配置,使用 redis 实现消息缓存,集群,使用 ...

    高并发Web架构实现思路——java版

    ### 高并发Web架构实现思路——Java版 #### 一、引言 随着互联网的快速发展,Web应用系统面临着巨大的挑战,尤其是如何处理高并发、海量数据的情况。传统的Web架构已经无法满足当前的需求,这就需要我们探索新的...

Global site tag (gtag.js) - Google Analytics