更新-最近学习java的缓存机制,请大家看看我的代码有什么不足

问题描述

最近学习java的缓存机制,请大家看看我的代码有什么不足
一个简单的测试类,如果在高并发下会有问题么

 package com.test.cache;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;public class CacheManager {    private volatile static CacheManager cacheManager;//缓存类的实例    private long upDataTime;//最后一次更新的时间    private static Map<ObjectObject> cacheMap = new ConcurrentHashMap<ObjectObject>();//缓存容器    private boolean upDataStatus;//缓存状态true为正在更新,false为更新完毕    private CacheManager(){        upDataTime = System.currentTimeMillis();    }    /**     * 初始化,保证单例     * @return     */    public static CacheManager getInstance(){        if(cacheManager == null){            synchronized(CacheManager.class){                if(cacheManager == null){                    cacheManager = new CacheManager();                }            }        }        return cacheManager;    }    /**     * 载入数据     */    public void loadAllCache(){        upDataStatus = true;        /*****************************/ //模拟从数据库取数据,放入map        cacheMap.put(""1"" 1);        cacheMap.put(""2"" 2);        cacheMap.put(""3"" 3);        cacheMap.put(""4"" 4);        /*****************************/        upDataStatus = false;    }    /**     * 返回缓存     * @return     */    public Map<ObjectObject> getCache(){        long currentTime = System.currentTimeMillis();        boolean isTimeOut = isTimeOut(currentTime);        if(upDataStatus){            System.out.println(""当前缓存正在更新,不可取值"");            return null;        }        if(isTimeOut){            System.out.println(""当前缓存已超时,正在重新获取"");            this.upDataTime = System.currentTimeMillis();            this.reloadCache();//重新获取        }        return cacheMap;    }    /**     * 判断是否超时     * @param currentTime     * @return     */    private boolean isTimeOut(long currentTime){        return (currentTime-this.upDataTime > 100000 ? true :false);    }    /**     * 重新载入缓存     */    private void reloadCache(){        this.cacheMap.clear();        this.loadAllCache();    }}

解决方案

高并发需要考虑伸缩性,也就是多个服务器同时处理,那么需要进程之前的数据同步,而不是仅仅同步线程。你的程序没有什么实际的作用哦。

时间: 2024-10-02 10:33:03

更新-最近学习java的缓存机制,请大家看看我的代码有什么不足的相关文章

Java日志缓存机制的实现

概述 日志技术为产品的质量和服务提供了重要的支撑.JDK 在 1.4 版本以后加入了日志机制,为 Java 开发人员提供了便利.但这种日志机制是基于静态日志级别的,也就是在程序运行前就需设定下来要打 印的日志级别,这样就会带来一些不便. 在 JDK 提供的日志功能中,日志级别被细化为 9 级,用以 区分不同日志的用途,用来记录一个错误,或者记录正常运行的信息,又或是记录详细的调试信息.由于日志 级别是静态的,如果日志级别设定过高,低级别的日志难以打印出来,从而导致在错误发生时候,难以去追踪 错误

请大牛看看我的这个javascript做的鼠标拖地的代码!哪儿有问题呢?

问题描述 请大牛看看我的这个javascript做的鼠标拖地的代码!哪儿有问题呢? <html> <meta charset="utf-8"> <title>内嵌滑鼠</title> <script type="text/javascript"> window.onload = function(){ var oDiv = document.getElementById("div1");

paacal-dp 滑雪 请帮我看看我的代码哪里错了 特别是search过程 谢谢!

问题描述 dp 滑雪 请帮我看看我的代码哪里错了 特别是search过程 谢谢! 滑雪是一项非常刺激的运动,为了获得速度,滑雪的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.给出一个由二维数组表示的滑雪区域,数组的数字代表各点的高度.请你找出这个区域中最长的滑坡. 下面是一个例子: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当

java学习 java 的继承机制 暑假第三天

final 定义的常量 能在构造函数中初始化  常量我们一般设置为静态的 让所有对象共享这个变量节省内存空间     如果常量是静态的那么 我们再定义的时候就要初始化  因为 静态的常量我们没有初始化赋值 我们要这样   static  final  double PI=3.141592653     java中的继承机制用 exteds标识  ...       java中不允许多重继承    方法的重载发生在一个类 方法的覆盖发生在 基类与子类 java提供了一种访问被覆盖的父类方法的一种机

请人帮我看看我的代码,报空指针的错误

问题描述 下面的是我的代码中的一个类,主要问题就是在我添加DVD过后,再删除添加的DVD.然后添加新的DVD后就会报错报错的是这句话:if(dvd[i].name.compareToIgnoreCase("")==0){packagecom.jb.cdjj.s1t112.chapter16.t1;importjava.util.Scanner;importjavax.swing.JOptionPane;publicclassMiniDvdManager{Scannerinput=new

细述 Java垃圾回收机制→Java Garbage Collection Introduction

计划写一个介绍Java垃圾回收基础的系列文章,共分四部分: Java垃圾回收简介 Java垃圾回收器是如何工作的? 各种类型的Java垃圾回收器 Java垃圾回收的监控和分析 本文是这个系列的第一篇文章,这篇文章将会介绍一些基本术语,如:JDK,JVM,JRE,HotSpot VM,以及理解JVM的架构和Java堆内存结构.在开始学习Java垃圾回收机制之前确实有必要了解一下这些基本东西. 关键的Java术语 Java API–一个帮助程序员创建Java应用的打包好的库集合 Java Devel

学习Java中需要注意那些重点知识?

问题描述 我是长沙清华it的一名学员,今年才开始接触Java方面的知识,我想问一下,学习Java需要怎么样去学,才学的更好.谢谢各位大师人物· 解决方案 解决方案二:语法完了...面向对象掌握好...集合IO...一直下去多看多敲...不要眼高手低就好解决方案三:重点结合hibernate理解面向对象的思想,结合struts理解MVC既web开发,结合spring理解ioc解决方案四:其实学习这门语言还是收获到很多的启示的学习永远没有旁观者别人会的,我们也会.谢谢大家的建议和意见.解决方案五:推

怎样学习Java?

问题描述 怎样学习Java? 解决方案 解决方案二:边看书,边动手实践解决方案三:跟哥学嘛菜鸟解决方案四:做书上的例题的时候,要边做边思考.动手与动脑相结合起来.解决方案五:多看多动手学而不练==竹篮打水解决方案六:看书+动手+思考+态度解决方案七:该回复于2010-11-26 13:11:33被版主删除解决方案八:我认为学习Java最重要的是学习思想比如你学习一个JavaWeb框架的时候首先要弄清楚这个框架的原理只有这样当你学习其他框架的时候才容易上手.这是因为所以的框架原理都是大同小异所以理

java学习笔记13--反射机制与动态代理

Java的反射机制 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的. 这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制. Java 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类. 在运行时构造任意一个类的对象. 在运行时判断任意一个类所具有的成员变量和方法. 在运行时调用任意一个对象的方法 Reflection 是Java被视为动态(或准动态)