首先,
@PostConstruct说明
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。
对应的.@PreDestroy说明
被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。
这个方法就是在程序启动的时候,new一个syncDb对象,并且创建一个定时线程去执行syncDb里面的run方法
ScheduledExecutorService.scheduleAtFixedRate(syncDb, 10, 30, SECONDS) 是定时任务,参数的意义分别是:执行的任务,开始时间(程序启动 多久之后开始执行),执行频率,时间单位.也就是定时任务在系统运行十秒之后,每隔30s执行一次syncDb方法
PopulateAccountChargeTask 是一个线程.ExecutorService putAcctChargeTask = Executors.newSingleThreadExecutor()
ExecutorService 是接口对象,功能类似于线程池对象,可以传递参数,参数代表创建几个管理线程.
putAcctChargeTask.submit(acctChargeTask); 这个方法获取的是ExecutorService 执行 PopulateAccountChargeTask 线程并且获取Future<?> 类型的返回值.相对的execute()方法是无返回值的调用.