这个是我的源码public class MemConnectTestTimer    
    /**
     * 测试mem连接是否有效
     */
    public static void testMemConnect()
    {
        if (logger.isInfoEnabled())
        {
            logger.info("ento the testMemConnec()");
        }
        
        //获取定时时间间隔
        int time = Integer.parseInt(900000);
        
        //初始化定时类
        Timer timer = new Timer();
        
        //定时检测,tomcat启动10s后启动
        timer.schedule(new MemTask(), 10000,time);
        
        if (logger.isInfoEnabled())
        {
            logger.info("exit the testMemConnec()");
        }
    }
}public class MemTask extends TimerTask
{
    
    /**
     * 日志信息
     */
    private static UCDLog logger = LogManager.getLog(Contants.COMMON_LOG);
    
    //获取缓存类实例
    private static MyMemcached memcached = MyMemcached.getInstance();
    
    /**
     * 重载TimerTask的run方法
     */
    public void run()
    {
        //记录入口日志
        if (logger.isInfoEnabled())
        {
            logger.info("Begin to test memcached......");
        }
        
        //如果插入数据失败,则重新初始化缓存类
        if (!memcached.addData("test", "test"))
        {
            memcached.reInit("test", "test");
        }
        
        //记录出口日志
        if (logger.isInfoEnabled())
        {
            logger.info("Exit from test memcached.");
        }
    }
    
}
有时候看日志的时候会抛这样一个异常:
2011-08-26 15:58:35,035 INFO  [Timer-0] [? run] Exit from test memcached.
Exception in thread "Timer-0" java.lang.NullPointerException
        at com.huawei.internet.util.MemTask.run(Unknown Source)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)是不是我的类哪里写得不够好

解决方案 »

  1.   

    private static MyMemcached memcached = MyMemcached.getInstance();
    看代码,估计是你的memcached是null,调用
    if (!memcached.addData("test", "test"))
            {
                memcached.reInit("test", "test");
            }
    之前做个判断看看,看看memcached是不是null
      

  2.   

    应该是把static去掉.在判断是否为null