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)** 在IT行业中,面对高并发场景时,缓存技术是提高系统性能和响应速度的关键手段。基于ehcache的缓存器是一种常见的解决方案,它能够在内存中存储常用数据,减少对数据库的访问,从而...
在传统的实现方式中,通常采用单个锁来保护整个缓存结构,这种做法在并发量较低的情况下没有明显问题,但在高并发环境下容易成为瓶颈。为了解决这一问题,可以考虑将原有的单一缓存结构通过水平切分的方式转换为多个...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用!...基于SSM框架实现的高并发商品秒杀系统源码+项目说明(c3p0作为连接池,Redis为缓存实现高并发 ,同时通过MySQL优化降低了网络延迟与GC的影响).zip
高并发网站通常采用多种技术手段,如负载均衡、分布式部署、缓存技术等来实现。 2. 分布式缓存Redis:Redis是一个开源的高性能键值对数据库,经常被用作缓存系统。在高并发网站中,使用Redis作为缓存可以大幅度提升...
在本文中,我们将探讨三种主要的高并发系统设计方法,以及如何利用缓存来提升系统的性能。 首先,我们需要理解两种扩展策略:Scale-up和Scale-out。Scale-up,即纵向扩展,是指通过提升单个服务器的硬件配置,如...
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的...基于SSM框架实现的高并发商品秒杀系统源码+项目说明(c3p0作为连接池,Redis为缓存实现高并发 ,同时通过MySQL优化降低了网络延迟与GC的影响).zip
并发访问控制是高速缓存实现中的另一大挑战。在Java中,可以使用synchronized关键字或者java.util.concurrent包中的工具类如ReentrantLock、Semaphore等来实现线程安全。例如,当多个线程同时尝试读写缓存时,需要...
1. Spring Cache:Spring框架提供的缓存抽象层,支持多种缓存实现。 2. Ehcache:轻量级内存缓存库,适用于小型项目。 3. Redis:内存数据库,支持字符串、哈希、集合等多种数据结构,广泛应用于缓存场景。 六、...
**基于AJAX的高并发数据传输与缓存技术研究** 在现代Web开发中,AJAX(Asynchronous JavaScript and XML)已经成为提升用户体验的关键技术。通过在后台与服务器进行异步数据交换,AJAX允许网页实现部分刷新,无需...
总体而言,本课程内容十分丰富,覆盖了缓存架构的多个重要方面,包括从缓存技术的选择与应用,到搭建完整的高可用、高并发缓存系统,并涉及故障应对和数据恢复的实践经验。课程的每个部分都紧密结合实际应用,为学习...
Mybatis-plus基于Redis实现二级缓存过程解析 Mybatis-plus是一款基于Java语言的持久层框架,旨在简化数据库交互操作。然而,在高并发、高性能的应用场景中,数据库的查询操作可能会成为性能瓶颈。为了解决这个问题...
本文介绍了分布式缓存服务架构的设计和实现,旨在解决传统单机缓存的缺陷,实现高并发、高可用和高扩展性的缓存服务。 缓存在软件中被广泛应用,它的作用是将频繁访问的热点数据加载在内存中,提升访问的性能和效率...
│ 高并发编程第二阶段07讲、CPU以及CPU缓存的结构,解决高速缓存一致性问题的两种方案介绍.mp4 │ 高并发编程第二阶段08讲、并发编程的三个重要概念,原子性,可见性,有序性.mp4 │ 高并发编程第二阶段09讲、...
【基于Node.js的高并发电商购物系统设计与实现】 在当今互联网时代,电子商务网站面临着日益增长的并发访问压力,特别是由于直播营销和各种电商节日活动的兴起,这使得企业对高性能、高并发的系统需求更加迫切。...
在高并发环境下,EF可以帮助我们减少与数据库的直接交互,通过实体的缓存和批处理操作来提高性能。例如,使用EF的DbContext缓存机制可以避免频繁的数据库查询,而DbContext的SaveChanges方法则支持批量保存,从而...
亿级流量电商详情页系统的大型高并发与高可用缓存架构实战-未加密版本有时间可以学习一下,挺不错的一个资源!(对高并发,高可用缓存等详细介绍)
2. **线程安全**:为了支持高并发,freecache内部实现了线程安全机制,使得多个goroutine可以同时读写缓存而不会出现数据竞争问题。 3. **无锁算法**:freecache可能使用了无锁或者自旋锁等低开销同步原语,以减少...
通过学习,你将能够设计和实现亿级流量电商网站的商品详情页系统,以及应对各种高并发和高可用问题的缓存架构。此外,还能掌握如何将缓存技术应用于大型复杂的分布式系统,提升个人技术竞争力和面试优势。
详细讲解如何实现一个复杂的缓存系统架构,去直接支撑电商背景下的高并发与高性能的访问,同时基于缓存架构本身所处的复杂分布式系统架构环境下,如何设计与实现一个高可用的分布式系统架构。期望通过本套课程能帮助...