zoukankan      html  css  js  c++  java
  • 缓存(二)

    public abstract class SessionHandler : IDisposable
        {
            /// <summary>
            /// 缓存更新线程
            /// </summary>
            Thread SessionThread;
    
            /// <summary>
            /// 最后更新时间
            /// </summary>
            public DateTime LastModified { get; protected set; }
    
            /// <summary>
            /// 加载缓存
            /// </summary>
            protected abstract void LoadSession();
    
            /// <summary>
            /// 线程开始时间
            /// </summary>
            /// <param name="sleep">休眠时间</param>
            protected void StartSessionThread(int sleep)
            {
                SessionThread = new Thread(() =>
                {
                    while (true)
                    {
                        Thread.Sleep(sleep);
                        LoadSession();
                    }
                });
                SessionThread.Start();
            }
    
            /// <summary>
            /// 初始化
            /// </summary>
            public virtual void Init()
            {
                LastModified = DateTime.MaxValue;
                LoadSession();
                StartSessionThread(1800000);
            }
    
            private bool Disposed;
    
            public void Dispose()
            {
                if (SessionThread != null)
                {
                    SessionThread.Abort();
                }
                GC.SuppressFinalize(this);
            }
        }
    
        public abstract class ListSessionHandler<T> : SessionHandler, IDisposable
                where T : new()
        {
    
            /// <summary>
            /// 同步锁
            /// </summary>
            protected object Lock = new object();
    
            /// <summary>
            /// 缓存集合
            /// </summary>
            protected List<T> _session;
    
            /// <summary>
            /// 只读集合
            /// </summary>
            public IQueryable<T> Session
            {
                get
                {
                    if (_session == null) return null;
                    lock (Lock)
                    {
                        return _session.AsQueryable<T>();
                    }
                }
            }
    
            /// <summary>
            /// 数据库数据
            /// </summary>
            public abstract IQueryable<T> Database { get; }
    
            private bool Disposed;
        }
    
        public abstract class DictionarySessionHandler<T, V> : SessionHandler, IDisposable
        where V : new()
        {
            /// <summary>
            /// 同步锁
            /// </summary>
            protected object Lock = new object();
    
            /// <summary>
            /// 缓存集合
            /// </summary>
            protected Dictionary<T, V> _session;
    
            /// <summary>
            /// 只读集合
            /// </summary>
            public Dictionary<T, V> Session
            {
                get
                {
                    if (_session == null) return null;
                    lock (Lock)
                    {
                        return _session;
                    }
                }
            }
    
            /// <summary>
            /// 数据库数据
            /// </summary>
            public abstract Dictionary<T, V> Database { get; }
    
            private bool Disposed;
        }
  • 相关阅读:
    HashMap_经典存储_经典分拣思路
    (GOF23设计模式)_单例模式_应用场景_饿汉式_懒汉式
    sql简单测试
    Java概述
    搭建集群时的问题总结
    在Java连接hbase时出现的问题
    JavaAPI与hbase的交互
    Resourcemanager的高可用
    hbase安装
    hbase报错org.apache.hadoop.hbase.TableExistsException: hbase:namespace
  • 原文地址:https://www.cnblogs.com/liyangLife/p/5417421.html
Copyright © 2011-2022 走看看