`

高并发缓存实现 二

    博客分类:
  • java
 
阅读更多

public class ProductTask {
	private static ConcurrentHashMap<String, Future<Long>> glodDeptFutuMap = new ConcurrentHashMap<String, Future<Long>>();

	public long getValue(final String key) {
		long deptid = 0;
		while (true) {
			Future<Long> deptV = glodDeptFutuMap.get(key);
			if (deptV == null) {
				Callable<Long> eval = new Callable<Long>() {
					public Long call() throws Exception {
						
						long s = new Random().nextLong();
						System.out.println(key+" 新值: "+s+"\t");
						return s;
					}
				};

				FutureTask<Long> ft = new FutureTask<Long>(eval);
				deptV = glodDeptFutuMap.putIfAbsent(key, ft);
				if (deptV == null) {
					deptV = ft;
					ft.run();
				}
			}
			try {
				deptid = deptV.get();
			} catch (InterruptedException e) {
				e.printStackTrace();
			} catch (ExecutionException e) {
				e.printStackTrace();
			}
			break;
		}

		return deptid;
	}

}

 

public class OperProductThread implements Runnable,Serializable{

	private String product ;
	public OperProductThread(String product){
		this.product = product;
	}
	public void run() {
		ProductTask pro = new ProductTask();
		System.out.println(product+"\t"+pro.getValue(product)+" "+Thread.currentThread().getName());
	}
}
 

public class ProductTest {

	public static void main(String[] args) {
		//构造一个线程池 
        ThreadPoolExecutor threadPool = new ThreadPoolExecutor(5, 10, 3, 
        TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(10), 
        new ThreadPoolExecutor.CallerRunsPolicy()); 
        
        for (int i = 1; i <= 2000; i++)
        {
        	threadPool.execute(new OperProductThread("product"+i));
        }
        for (int i = 1; i <= 2000 ; i++)
        {
        	threadPool.execute(new OperProductThread("product"+i));
        }
        
        threadPool.shutdown();
        try {  
            boolean loop = true;  
            do {    //等待所有任务完成  
                loop = !threadPool.awaitTermination(2, TimeUnit.SECONDS);  
            } while(loop);  
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        } 
	}
}
 

 

分享到:
评论

相关推荐

    高并发缓存器(基于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等来实现线程安全。例如,当多个线程同时尝试读写缓存时,需要...

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

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

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

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

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

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

    Mybatis-plus基于redis实现二级缓存过程解析

    Mybatis-plus基于Redis实现二级缓存过程解析 Mybatis-plus是一款基于Java语言的持久层框架,旨在简化数据库交互操作。然而,在高并发、高性能的应用场景中,数据库的查询操作可能会成为性能瓶颈。为了解决这个问题...

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

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

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段07讲、CPU以及CPU缓存的结构,解决高速缓存一致性问题的两种方案介绍.mp4 │ 高并发编程第二阶段08讲、并发编程的三个重要概念,原子性,可见性,有序性.mp4 │ 高并发编程第二阶段09讲、...

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

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

    .net高并发解决方案

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

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

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

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

    2. **线程安全**:为了支持高并发,freecache内部实现了线程安全机制,使得多个goroutine可以同时读写缓存而不会出现数据竞争问题。 3. **无锁算法**:freecache可能使用了无锁或者自旋锁等低开销同步原语,以减少...

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

    通过学习,你将能够设计和实现亿级流量电商网站的商品详情页系统,以及应对各种高并发和高可用问题的缓存架构。此外,还能掌握如何将缓存技术应用于大型复杂的分布式系统,提升个人技术竞争力和面试优势。

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

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

Global site tag (gtag.js) - Google Analytics