zoukankan      html  css  js  c++  java
  • 解决定时执行代码可能跳过的问题

    一般我们在开发项目时,可能会有些功能需要用线程去定时去处理,比如短信定时发送、数据定时统计等等。但既然是定时,一定就是一个时间点。那么程序就有可能在这个时间点上,并没有运行到你所写的代码上来,或是错过了。这样就可以达不到我们的目的。下面是我解决此方法的相关代码。

    //创建一个线程
    System.Threading.Thread tread03 = new System.Threading.Thread(new System.Threading.ThreadStart(Threads03));
    //启动线程
    tread03.Start();

    void Threads03()
    {
        
    //每天12:00执行一次
        DateTime temp_dt = default(DateTime);
        
    while (true)
        {
            DateTime exec_dt 
    = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"+ " 12:00:00");
            DateTime new_dt 
    = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:00"));
            
    if (DateTime.Compare(new_dt.AddMinutes(-3), exec_dt) < 0 && DateTime.Compare(new_dt.AddMinutes(3), exec_dt) > 0)
            {
                
    if (DateTime.Compare(exec_dt, temp_dt) != 0)
                {
                    
    //在为里写相关功能处理代码
                    temp_dt = exec_dt;
                }
            }
            System.Threading.Thread.Sleep(
    60000);  //休眠一分钟
        }
    }
  • 相关阅读:
    mysql 查询当天、本周,本月,上一个月的数据
    Mysql 查看连接数,状态 最大并发数,以及设置连接数
    MySQL慢查询日志优化
    java中线程通信(传统的线程通信)
    java中死锁
    同步锁(lock)
    同步锁(lock)
    释放同步监视器的锁定(java疯狂讲义)
    linux第9天 UDP
    linux第8天 connect强化
  • 原文地址:https://www.cnblogs.com/linyechengwei/p/1597809.html
Copyright © 2011-2022 走看看