`
lpm528
  • 浏览: 84175 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

通过线程去实现项目启动后每隔段时间去扫描数据库

    博客分类:
  • java
 
阅读更多

  <servlet-name>DataSyn</servlet-name>
  <servlet-class>com.datasyn.DataSyn</servlet-class>
  <init-param>
   <param-name>interval</param-name>
   <param-value>5000</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>          //项目启动就执行这个servlet
 </servlet>
 <servlet-mapping>
  <servlet-name>DataSyn</servlet-name>
  <url-pattern>/servlet/DataSyn</url-pattern>
 </servlet-mapping>

 

 

servlet类中的的init和destroy方法:

 

public class DataSyn extends HttpServlet {

 private static Logger  log = Logger.getLogger(DataSyn.class.getName());
 private Thread t = null;
 private boolean istop = false;


 /**
  * Constructor of the object.
  */
 public DataSyn() {
  super();
 }

 

 

 /**
  * Initialization of the servlet. <br>
  *
  * @throws ServletException if an error occurs
  */
 public void init() throws ServletException {
  System.out.println("DataSyn init 准备启动");  

  Runnable r = new Runnable() {           //匿名内部类
   Resouce resource = new Resouce();
   OpDb oD = new OpDb();
   public void run() {                          //实现runnable接口的run方法
        while(!istop)
    {
     try {
      Thread.sleep(Integer.parseInt(DataSyn.this.getInitParameter("interval")));  //此线程每隔段时间休眠
     } catch (NumberFormatException e) {
      e.printStackTrace();
     } catch (InterruptedException e) {
        e.printStackTrace();
     }    
     resource.work();         //具体的数据库操作写在这方法里
     }
   }
  };
  t = new Thread(r);
  t.start();                    //开始执行此线程的方法run
 }

 

 /**
  * Destruction of the servlet. <br>
  */
 public void destroy() {
  super.destroy(); // Just puts "destroy" string in log
  // Put your code here
  istop = true;
  try {
   t.join();
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println("destroy");
 }


}

 

 

分享到:
评论

相关推荐

    csv导入数据库 java源代码

    在描述中提到的"扫描csv文件的数据到数据库中 java源代码",意味着代码将逐行读取CSV文件,解析每一行,然后将这些数据作为新记录添加到数据库中。实现这一功能的Java代码会包含上述提到的各个步骤。 通过标签"csv...

    H2数据库 源码 哈哈

    执行器将优化后的计划转化为具体的数据库操作,如表扫描、索引查找等。 源码中的`H2Test`文件可能是一个测试模块,用于验证数据库的各种功能和性能。在阅读源码时,这些测试用例能帮助我们更好地理解H2的实现逻辑。...

    数据库连接

    数据库连接通常通过API(应用程序接口)实现,比如在Java中使用JDBC(Java Database Connectivity),在Python中使用DB-API或ORM(对象关系映射)如SQLAlchemy。这些API提供了一套标准的接口,使得开发者能够与各种...

    万能急速扫描器

    【万能急速扫描器】可能采用了多线程或并发扫描技术,提高了扫描速度,能在短时间内覆盖大量IP地址。 该扫描器可能包含以下特性: 1. 自定义扫描范围:用户可以设置扫描的起始和结束IP,或者选择特定的IP段进行扫描...

    强大的扫描工具x-scan

    “并发扫描”项 - 设置并发扫描的主机和并发线程数,也可以单独为每个主机的各个插件设置最 大线程数。 “网络设置”项 - 设置适合的网络适配器,若找不到网络适配器,请重新安装WinPCap 3.1 beta4 以上版本驱动...

    ACM在线测评系统评测程序设计与实现

    由于多线程/进程会竞争资源,对于扫描出来的一个题目,如果多个评测进程同时去评测,可能会造成死锁,为了防止这种现象,可以使用了生产者-消费者模式,也就是建立一个待评测题目的任务队列,这个队列的生产者作用...

    病毒扫描器软件——计算机毕业设计

    本毕业设计项目旨在实现一个基于特征码监测的病毒扫描器,为用户提供安全的计算机环境。 一、病毒扫描器基础原理 1. 特征码检测:这是传统病毒扫描器最常用的方法,通过对已知病毒的特征码进行比对来识别病毒。...

    springboot+mybatisplus+mysql 多数据源

    在Spring Boot中,这通常通过`AbstractRoutingDataSource`实现,它可以基于某些条件(如线程绑定、请求上下文等)来决定使用哪个数据源。 5. **配置文件**: 项目中的配置文件(可能包含application.properties或...

    mysql数据库my.cnf配置文件

    # 然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。 # 如果期望在一个短时间内有很多连接,你需要增加它。也就是说,...

    数据库面试基础知识.docx

    - 通过不同的配置文件启动多个 MySQL 实例。 9. **如何加强 MySQL 安全** - 限制用户访问权限、加密传输数据、定期备份等。 10. **Delete 和 Truncate 的区别** - 见上文描述。 11. **MySQL Sleep 线程过多...

    Safe3 Web漏洞扫描系统企业版v10.1特别版

    网站的应用逐步增多,更新较快,每隔一段时间应 做一次全面检测,若采用传统渗透测试方法,花费昂贵,且往往得不到真正意义上的风险报告。Safe3 Web Vul Scanner使用较为领先的智能化爬虫技术及SQL注入状态检测技术...

    针对于java面试资料.docx

    - **线程安全性**:`ConcurrentHashMap` 通过内部实现的分段锁机制保证了线程安全。 - **高性能**:通过将整个数据结构分为多个部分(称为“段”或“Segment”),不同的线程可以同时访问不同的段,从而提高并发性能...

    云数据库RDS SQL Server最佳应用实践.pdf

    适当调低•偏分析型负载或利用率较低的情况:适当调高可以在数据库级别设置覆盖(以上)可以在语句级别设置覆盖性能优化实例级参数(阻塞的监控阈值)超过这个时间长度(秒)的阻塞问题可以通过跟踪记录下来上默认值...

    Safe3 Web蜘蛛爬行漏洞扫描系统 v9.6

    网站的应用逐步增多,更新较快,每隔一段时间应做一次全面检测,若采用传统渗透测试方法,花费昂贵,且往往得不到真正意义上的风险报告。Safe3 Web Vul Scanner使用较为领先的智能化爬虫技术及SQL注入状态检测技术,...

    01-JAVA岗位笔试题(A卷)附答案

    当线程数超过核心线程数时,多余的线程将在空闲一段时间后被销毁。 - **workQueue**:任务队列。用于存放等待执行的任务。根据不同的实现,可以选择无界队列、有界队列或是优先级队列。 - **threadFactory**:线程...

    X-Scan v3.1

    采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备...

    X-Scan

    功能简介: &lt;br&gt; 采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用...

    java面试宝典,包含java基础篇、多线程、spring、springboot、mysql、redis、mq等等经典面试问题

    这份资源包含了Java基础、多线程、Spring框架、Spring Boot、MySQL数据库、Redis缓存以及消息队列MQ等多个核心知识点,每个部分都涵盖了经典且常见的面试问题。 1. **Java基础篇**: - 内存模型:了解JVM内存结构...

    MySQL源码结构解析

    10. **处理新连接**:通过`handle_connections_methods`函数处理新的连接请求,并为每个连接创建一个新的线程进行处理。 #### MySQL会话监听 MySQL服务器通过监听特定端口(默认为3306),等待客户端发起连接请求...

    ssm实现多数据源配置

    SSM(Spring、SpringMVC、...通过以上步骤,你可以成功地在SSM项目中实现多数据源配置,以适应不同的数据库访问需求。这个过程涉及到Spring的DI、AOP,以及MyBatis的映射机制,对理解和掌握Spring框架有极大的帮助。

Global site tag (gtag.js) - Google Analytics